静态方法的早期绑定,它是在非静态方法中调用的

时间:2014-11-18 13:28:50

标签: java

前提条件:超类中的静态方法由同一个类中的非静态方法调用,而非静态方法由一个子类的对象调用。

我的问题是:

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;
    }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

静态方法绑定到类 - 它们不能被覆盖。非静态方法调用其类的静态方法,隐式指定SuperClass.staticMethod()