gpt4 book ai didi

java - 在非静态方法中调用的静态方法的早期绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 12:16:13 24 4
gpt4 key购买 nike

前提条件:父类(super class)中的静态方法被同一个类中的非静态方法调用,并且该非静态方法被子类的对象调用。

我的问题是:

1.编译时:subClassObject(现在被视为SuperClass类型)绑定(bind)到staticMethod()?

2.运行时:子类对象(现在被视为子类的对象。)绑定(bind)到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;
}
}

谢谢。

最佳答案

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

关于java - 在非静态方法中调用的静态方法的早期绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26995526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com