从父类调用子类的静态方法
这是一个奇怪的问题,但我想知道是否有办法在子类中“覆盖”父类的静态方法,并从父类调用该子类的静态方法。
它看起来像这样
public class parentFoo { public static void printFoo () { T.printFoo(); } } public class childFoo extends parentFoo { public static void printFoo() { System.out.println("Foo"); } }
所以你可以在你的代码中做这样的事情
//print out "Foo" parentFoo.printFoo();
这不适合我,但我想知道是否有办法使这成为可能。 现在我得到一个堆栈溢出,因为它只调用父类的printFoo方法。
无法基于generics类型参数调用静态方法。
以下问题的答案提供了合理的解决方法。
- 使用generics类型调用静态方法
您不能覆盖静态方法。 但是,您可以定义同名的静态方法。 如果这样做,那么您可以指定从类类型中调用哪一个
ChildFoo.printFoo(); // call child foo ParentFoo.printFoo(); // call parent foo ParentFoo foo1 = new ChildFoo(); foo1.printFoo(); // ParentFoo still called because of type of reference foo1 not its value ChildFoo foo2 = new ChildFoo(); foo2.printFoo(); // ChildFoo called because of type of reference foo2 not its value
更换
parentFoo.printFoo();
同
childFoo.printFoo();
为什么需要覆盖 static
方法? (这是不可能的)你想要完成什么?
多态调用仅对对象有意义。 由于静态不是一个对象的一部分,而是一个类的一部分,它不是。