问题遇到的现象和发生背景
封装编程:不能调用子类的方法
问题相关代码,请勿粘贴截图
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());
}
}
运行结果及报错内容
方法不能调用,不能运行
我想要达到的结果
可以调用方法并且运行