如果此行需要保持不变,如何调用子类方法work():
Employee secretary = new Secretary();
public class Employee {
}
public class Secretary extends Employee {
public void work() {};
}
public static void main(String[] args) {
Employee secretary = new Secretary();
//secretary.work();
}
答案 0 :(得分:3)
你的秘书班必须延长Employee
public static class Employee {
}
public static class Secretary extends Employee{
public void work() {
}
}
public static void main(String[] args) {
Employee secretary = new Secretary();
((Secretary)secretary).work();
}
由于secretary
被声明为Employee
,你不能调用Secretary
类的方法,你需要将其强制转换:
((Secretary)secretary).work();
这将告诉编译器您的secretary
是[{1}}类型Employee
,然后您就可以调用Secretary
方法。
答案 1 :(得分:2)
如果父级必须知道API方法,那么扩展类有什么用呢?这违背了抽象的概念(这需要在声明为父类型的变量上调用方法)
在父级中声明work()方法,使类抽象并在子级中实现它是有意义的。
public abstract class Employee {
public abstract void work();
}
public class Secretary extends Employee {
public void work() {
//Implement here...
};
}
public static void main(String[] args) {
Employee secretary = new Secretary();
//secretary.work();
}
答案 2 :(得分:1)
当您说Secretary extends Employee
表示Secretary
将Employee
中包含所有公开和受保护的内容时,请不要期望您将获得{{1}类对象中的所有内容1}}。
你可以做这样的事情
Employee
OR
public abstract class Employee {
public abstract void work();
}
public class Secretary extends Employee {
public void work() {
//Implement here...
};
}