如何调用子类方法?
How can I call a subclass method?
如果此行需要保持不变,我如何调用子类方法 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();
}
您的秘书class必须延长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
class 的方法,你需要转换它:
((Secretary)secretary).work();
这将告诉编译器您的 secretary
是类型 Secretary
的 Employee
,然后您将能够调用 work()
方法。
如果 parent 必须知道 API 方法,那么扩展 class 有什么用?这违背了抽象的概念(这意味着您需要在声明为 parent 类型的变量上调用方法)
在 parent 中声明 work() 方法是有意义的,使 class 抽象并在 child 中实现它。
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();
}
当你说 Secretary extends Employee
意味着 Secretary
将拥有所有 public 和 Employee
中受保护的东西 所以,不要指望你会得到对象中的所有东西类型 Employee
.
你可以这样做
public abstract class Employee {
public abstract void work();
}
public class Secretary extends Employee {
public void work() {
//Implement here...
};
}
或
interface Stuff{
void work();
}
class Employee implements Stuff{
@Override
public void work() {
}
}
class Secretary extends Employee {
public void work() {}
}
如果此行需要保持不变,我如何调用子类方法 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();
}
您的秘书class必须延长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
class 的方法,你需要转换它:
((Secretary)secretary).work();
这将告诉编译器您的 secretary
是类型 Secretary
的 Employee
,然后您将能够调用 work()
方法。
如果 parent 必须知道 API 方法,那么扩展 class 有什么用?这违背了抽象的概念(这意味着您需要在声明为 parent 类型的变量上调用方法)
在 parent 中声明 work() 方法是有意义的,使 class 抽象并在 child 中实现它。
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();
}
当你说 Secretary extends Employee
意味着 Secretary
将拥有所有 public 和 Employee
中受保护的东西 所以,不要指望你会得到对象中的所有东西类型 Employee
.
你可以这样做
public abstract class Employee {
public abstract void work();
}
public class Secretary extends Employee {
public void work() {
//Implement here...
};
}
或
interface Stuff{
void work();
}
class Employee implements Stuff{
@Override
public void work() {
}
}
class Secretary extends Employee {
public void work() {}
}