欺骗可乐 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日

悬赏问题

  • ¥20 XP系统的老电脑一开机就提示找不到rundll.exe,付费求解
  • ¥15 milvus查询出来的score怎么转换成0-1之间的相似性
  • ¥15 多ip服务器站群如何搭建l2tp服务器
  • ¥15 lvgl V9移植到linux开发板
  • ¥15 VB.net中在窗体中创建一个button控件来关闭窗体,但是提示错误,我该怎么办
  • ¥15 网上下载好的程序但是arduinoIDE编程报错,运行不了,哪里出错了,能具体给改一下吗
  • ¥15 Sharepoint JS开发 付费技术指导
  • ¥15 输入程序运行仿真后,烟雾值不实时检测,变成固定值
  • ¥20 数据排序,可选择排序方向
  • ¥15 修改一下代码,考虑进程到达时间不同的情况