如果我有一個子類具有從父類重寫的方法,並且在非常特定的情況下我想使用原始方法,那麼如何調用這些方法?如何從子類調用重寫的父類方法?
7
A
回答
6
調用超級
class A {
int foo() { return 2; }
}
class B extends A {
boolean someCondition;
public B(boolean b) { someCondition = b; }
int foo() {
if(someCondition) return super.foo();
return 3;
}
}
+0
不應該在類A中使用foo()方法是靜態的,這樣你可以像這樣調用它:super.foo()? – 2011-03-07 04:41:43
+3
@Eng不!靜態意味着很不同的東西。 – corsiKa 2011-03-07 04:43:22
6
這就是super
是。如果重寫方法method
,那麼你可能會實現這樣的:
protected void method() {
if (special_conditions()) {
super.method();
} else {
// do your thing
}
}
2
通常你可以使用關鍵字super
訪問父類的功能。 例如:[?在Java中,如何我所說的基類的從在派生類的覆蓋方法方法]
public class Subclass extends Superclass {
public void printMethod() { //overrides printMethod in Superclass
super.printMethod();
System.out.println("Printed in Subclass");
}
public static void main(String[] args) {
Subclass s = new Subclass();
s.printMethod();
}
}
從http://download.oracle.com/javase/tutorial/java/IandI/super.html兩者
相關問題
- 1. Ruby:調用子類中的父類的重寫方法
- 2. 從抽象超類調用重寫的子類的類方法
- 3. 父類的方法如何訪問子類的重寫變量?
- 4. 如何限制在C#中重寫父類方法的子類?
- 5. 如何從子類中的覆蓋方法調用父方法
- 6. 重寫父類的方法
- 7. 如何從父類調用重寫的方法而不是超類?
- 8. 子類調用父類的方法
- 9. 從子類調用父方法
- 10. 從父項調用子類方法
- 11. 如何在JAVA中從父類的內部類調用子類中的重寫方法?
- 12. 如何從父方法引用子類?
- 13. 從重寫的Java類調用方法。
- 14. 強制子類調用父級方法時重寫它
- 15. 調用子類重寫父的主要方法中的抽象方法
- 16. 用父類的子方法調用attr_accessor
- 17. 如何從父類調用孩子的方法?
- 18. 如何從JavaScript中的子類調用父方法?
- 19. 從子類中的重載方法調用基類方法
- 20. 如何調用父類的子類方法對象
- 21. 調用基類重寫的方法從父類的構造函數
- 22. EmberJS:從子類的init方法調用父類的功能
- 23. 調用父類中的方法從子類 - 的JavaScript
- 24. 如何從超類方法中調用python子類的方法?
- 25. 如何從超類方法調用子類的方法?
- 26. 在超類的子類中重寫的調用方法
- 27. Java調用子類的前父方法
- 28. 調用父類的子方法在PHP
- 29. 父類的Ruby調用子方法
- 30. 從父類的實例調用子類方法
的可能重複(http://stackoverflow.com/questions/268929/in-java-how-to-i-call-a-base-class-method-from-the-overriding-method-in-a-deri) – 2011-03-07 22:00:10