为什么会是这样???? 这么写是合法的只要department和getDetails()是子类Manager继承父类Employee的,就通过 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Employee { private String name; private int salary; public String getDetails() { return Name: " + name + "\nSalary: " + salary; }}public class Manager extends Employee { private String department; public String getDetails() { return super.getDetails() + // call parents' // method "\nDepartment: " + department; }}Department是Manager中的域。我的问题是,在Employee e = new Manager()e.department = " Finance " ; // illegale.getDetails();//ligal中getDetails()是Manager类中的,还是Emplouee类中的 那是因为对于编译器来说,在那两行的e只是一个Employee的对象,不认为是一个Manager对象(当然在运行过程中它的确是一个Manager对象)所以e.department,编译器只会在Employee中查找,发现没有这个成员。所以这是非法的。你必须强制类型转换才可以((Manager)e).department = "..."; 如果getDetails()只是Manager的方法,而不是Employee中的方法,Employee e = new Manager()e.getDetails();会不会产生一个编译时错误? 因为虽然方法的调用是运行时的,但方法的检查应该是编译时的吧?谢谢! 你可以看看think in java的第一章,对这个解释得很清楚 e只是父类一个引用只要是父类的引用就可以调用子类的对象,我认为问题可能不在于你的department是那个类的,而在于它是一个private的,所以你需要在 Manager类中写一个给department赋值的函数。然后调用该函数。 Java 信息框 java图片下载保存 求 ajax 与后台频繁交互 效率 优化方案 求助高手~~~java.lang.NullPointerException 关于在FOR循环里变量定义 java连接数据库取数赋值 try catch finally 紧急求助---java本地化问题 求一个生成随机随机数的方法 StringBuffer 的 capacity 方法返回什么容量? 请教高手,线程里面的东西运行完了之后其占用的资源会自动被java自动回收吗,我怎么看到我的2000里面有几百个进程的!!!! 哪里有jrun302的注册码???
private String name;
private int salary;
public String getDetails() {
return Name: " + name + "\nSalary: " + salary;
}
}public class Manager extends Employee {
private String department; public String getDetails() {
return super.getDetails() + // call parents'
// method
"\nDepartment: " + department;
}
}Department是Manager中的域。
我的问题是,在
Employee e = new Manager()
e.department = " Finance " ; // illegal
e.getDetails();//ligal
中
getDetails()是Manager类中的,还是Emplouee类中的
所以e.department,编译器只会在Employee中查找,发现没有这个成员。所以这是非法的。
你必须强制类型转换才可以
((Manager)e).department = "...";
Employee e = new Manager()
e.getDetails();
会不会产生一个编译时错误? 因为虽然方法的调用是运行时的,但方法的检查应该是编译时的吧?
谢谢!
只要是父类的引用就可以调用子类的对象,
我认为问题可能不在于你的department是那个类的,
而在于它是一个private的,
所以你需要在 Manager类中写一个给department赋值的函数。
然后调用该函数。