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

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

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

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

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

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 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!