前提条件:超类中的静态方法由同一个类中的非静态方法调用,而非静态方法由一个子类的对象调用。
我的问题是:
1.Compile-time:subClassObject(现在它被视为SuperClass类型)绑定到staticMethod()?
2.Run-time:subClassObject(现在被视为subClass的对象。)绑定到nonStaticMethod()?
package a;
public class SuperClass {
public static void staticMethod() {
System.out.println("Superclass.");
}
public void nonStaticMethod() {
staticMethod();
}
}
package a;
public class SubClass extends SuperClass {
public static void staticMethod() {
System.out.println("Subclass.");
}
}
package a;
public class Demo {
public static void main(String[] args) {
SubClass subClassObject = new SubClass();
subClassObject.nonStaticMethod(); // output: Superclass;
}
}
谢谢。
答案 0 :(得分:1)
静态方法绑定到类 - 它们不能被覆盖。非静态方法调用其类的静态方法,隐式指定SuperClass.staticMethod()
。