我在基类中定义了一个静态方法,我想在其子类中重写此方法,这可能吗?
我尝试了一下,但是没有按预期工作。当我创建类B的实例并调用其callMe()方法时,将调用类A中的静态foo()方法。
public abstract class A {
public static void foo() {
System.out.println("I am base class");
}
public void callMe() {
foo();
}
}
Public class B {
public static void foo() {
System.out.println("I am child class");
}
}
静态方法调用在编译时解决(不动态分配)。
class main {
public static void main(String args[]) {
A a = new B();
B b = new B();
a.foo();
b.foo();
a.callMe();
b.callMe();
}
}
abstract class A {
public static void foo() {
System.out.println("I am superclass");
}
public void callMe() {
foo(); //no late binding here; always calls A.foo()
}
}
class B extends A {
public static void foo() {
System.out.println("I am subclass");
}
}
给
I am superclass
I am subclass
I am superclass
I am superclass
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句