欺骗可乐 2022-07-23 22:11 采纳率: 100%
浏览 27
已结题

封装编程:不能调用子类的方法

问题遇到的现象和发生背景

封装编程:不能调用子类的方法

问题相关代码,请勿粘贴截图

package homework;

public class number14 {
Manger manger = new Manger("张小亮","M001","销售部");
Clerk clerk = new Clerk("李小亮","C001","销售部");
manger.setC(clerk);//setC方法不能调用
clerk.setM(manger);//setM方法不能调用
manger.show();//show方法不能调用
clerk.show();//show方法不能调用

}
//父类
//1. 定义员工Employee类。包含属性:姓名,工号,部门,成员方法show,方法内展示员工信息。
class Employee{
private String name;
private String id;
private String depart;
public Employee(){
super();
}
public Employee(String name,String id,String depart){
this.name = name;
this.id = id;
this.depart = depart;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getDepart() {
    return depart;
}

public void setDepart(String depart) {
    this.depart = depart;
}
public void show(){
    System.out.println(depart+"的:"+name+",员工编号:"+id);
}

}
//子类
//2. 定义经理Manger类继承Employee类,
// 包含属性:职员Clerk(类型为引用数据类型Clerk),
// 重写show方法,在父类实现基础之上增加展示职员信息。
class Manger extends Employee{
Clerk c;
public Manger(){
}
public Manger(String name,String id,String depart){
super(name,id,depart);
}

public void setC(Clerk c) {
    this.c = c;
}

public Clerk getC() {
    return c;
}
public void show(){
    super.show();
    System.out.println("他的职员是:"+c.getName());
}

}
//子类
//定义职员Clerk类继承Employee类,包含属性:经理Manager(类型为引用数据类型Manager),
// 重写show方法,在父类实现基础之上增加展示经理信息
class Clerk extends Employee{
Manger m;
public Clerk(){
}
public Clerk(String name,String id,String depart){
super(name,id,depart);
}

public void setM(Manger m) {
    this.m = m;
}

public Manger getM() {
    return m;
}
public void show(){
    super.show();
    System.out.println("他的经理是:"+m.getName());
}

}

运行结果及报错内容

方法不能调用,不能运行

我想要达到的结果

可以调用方法并且运行

  • 写回答

1条回答 默认 最新

  • a5156520 2022-07-23 22:45
    关注

    把下面这段代码放入main方法中就可以了。

    public class number14 {
    
        public static void main(String[] args) {
            Manger manger = new Manger("张小亮","M001","销售部");
            Clerk clerk = new Clerk("李小亮","C001","销售部");
            manger.setC(clerk);//setC方法不能调用
            clerk.setM(manger);//setM方法不能调用
            manger.show();//show方法不能调用
            clerk.show();//show方法不能调用
        }
    
    }
    //父类
    //1. 定义员工Employee类。包含属性:姓名,工号,部门,成员方法show,方法内展示员工信息。
    class Employee{
    private String name;
    private String id;
    private String depart;
    public Employee(){
    super();
    }
    public Employee(String name,String id,String depart){
    this.name = name;
    this.id = id;
    this.depart = depart;
    }
    
    public String getName() {
        return name;
    }
     
    public void setName(String name) {
        this.name = name;
    }
     
    public String getId() {
        return id;
    }
     
    public void setId(String id) {
        this.id = id;
    }
     
    public String getDepart() {
        return depart;
    }
     
    public void setDepart(String depart) {
        this.depart = depart;
    }
    public void show(){
        System.out.println(depart+"的:"+name+",员工编号:"+id);
    }
    }
    //子类
    //2. 定义经理Manger类继承Employee类,
    // 包含属性:职员Clerk(类型为引用数据类型Clerk),
    // 重写show方法,在父类实现基础之上增加展示职员信息。
    class Manger extends Employee{
    Clerk c;
    public Manger(){
    }
    public Manger(String name,String id,String depart){
    super(name,id,depart);
    }
    
    public void setC(Clerk c) {
        this.c = c;
    }
     
    public Clerk getC() {
        return c;
    }
    public void show(){
        super.show();
        System.out.println("他的职员是:"+c.getName());
    }
    }
    //子类
    //定义职员Clerk类继承Employee类,包含属性:经理Manager(类型为引用数据类型Manager),
    // 重写show方法,在父类实现基础之上增加展示经理信息
    class Clerk extends Employee{
    Manger m;
    public Clerk(){
    }
    public Clerk(String name,String id,String depart){
    super(name,id,depart);
    }
    
    public void setM(Manger m) {
        this.m = m;
    }
     
    public Manger getM() {
        return m;
    }
    public void show(){
        super.show();
        System.out.println("他的经理是:"+m.getName());
    }
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月1日
  • 已采纳回答 7月24日
  • 创建了问题 7月23日

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低