【发布时间】:2016-01-11 14:11:42
【问题描述】:
假设我有 2 个班级。
父类:
public class ParentClass {
public static void getInstance(){
System.out.println("Parent method");
}
}
子类:
public class ChildClass extends ParentClass {
public static void getInstance(){
System.out.println("child method");
}
public static void main(String args[]){
ParentClass pc=new ChildClass();
pc.getInstance();
}
}
正如您在上面注意到的那样,两个类都有一个名为 getInstance() 的静态方法,在 java 和许多其他语言中,如果有一个继承的方法并且您在子类中有相同的方法,那么执行的方法是子类中的一个类。
问题是:为什么pc.getInstance();会调用父类中的方法?是的,没有覆盖静态方法的方法,但是任何人都可以解释更多 pc 实例的奇怪行为以及为什么它引用父方法,即使它指向子类?
为什么允许引用类的实例来调用静态方法?
谢谢
【问题讨论】:
-
将
ParentClass pc=new ChildClass();更改为ChildClass pc=new ChildClass();看看会发生什么。 -
子类中的静态方法只隐藏了父类的静态方法。静态方法中没有方法覆盖
标签: java inheritance static subclass superclass