class B extends A {
static public void printMe(){
System.out.println("in static B");
}
}
class A{
static public void printMe(){
System.out.println("In static A");
}
}
public static void main(String[] args) {
A a = new B();
a.printMe();
}
为什么输出"在静态A" ?
答案 0 :(得分:4)
静态成员绑定到类型而不是实现类型。因此,您可以看到从A类执行的方法。
静态成员不是ovverriden,无论实例状态如何,它们都共享相同的副本。
如果您需要ovveriden方法,请不要将它们用作静态成员。
答案 1 :(得分:0)
静态成员或方法属于类级别而不是特定实例。
即使您创建多个实例或不创建实例,静态类也只有一个实例。
在您的情况下,由于您已经创建了A类的实例,因此实现了A类中的方法。
另一种简单明了问题场景的方法是尝试运行下面提到的代码:
public static void main(String[] args) {
A.printMe();
}
你会明白的想法。