Java and skipping a level with super
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Why is super.super.method(); not allowed in Java?
号
如果您有一个派生自另一个类的类,我是否可以调用super.super方法而不是被重写的方法?
1 2 3 4 5 6 7 8 9 10 11 | class A{ public void some(){} } class B extends A{ public void some(){} } class C extends B{ public void some(){I want to call A.some();} } |
看:为什么是Super?Super?方法();在Java中不允许?
@Tganblin是对的,但这里有一个解决方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class A{ public void some(){ sharedCode() } public final void someFromSuper(){ sharedCode() } private void sharedCode() { //code in A.some() } } class B extends A{ @Override public void some(){} } class C extends B{ @Override public void some(){ //I want to call A.some(); someFromSuper(); } } |
在中创建方法的第二个最终版本(不可重写),并从C调用它。
这实际上是一个糟糕的设计,但有时需要在JDK内部使用。
当做,圣潘