假設我有兩個類A和B,其中A是B的超現在,我寫一個函數(覆蓋),說在兩個類本功能()。那麼,如果我想從B的對象中調用A中的funct(),有可能嗎?調用子類從超類中重寫功能JAVA
0
A
回答
0
鑑於類你問
然後,如果我想從B的對象調用A中的本功能(),它是可能 ?
因此,讓我們
B b = new B();
b.funct();
A a = b;
a.funct();
((A)b).funct();
以上都這樣做,因爲多態性與後期綁定的同樣的事情。
調用父類的實現的唯一途徑是通過super
關鍵字獲取對成員的引用。
class A {
public void funct() {...}
}
class B extends A {
@Override
public void funct() {
super.funct();
}
}
+0
所以,我們不能直接通過使用一個對象來調用over-ridden函數,對吧?謝謝您的幫助! –
+0
@DChetan沒錯。別客氣。 –
2
class A {
public void f() {...}
}
class B extends A {
@Override public void f() { super.f(); }
}
這就是你想要的嗎?
相反,如果你想直接調用A#f()
對B型的實例,你必須提供一個佔位符的功能:像
class A {
public void funct() {...}
}
class B extends A {
@Override
public void funct() {...}
}
class B extends A {
@Override public void f() { ... }
public void superF() { super.f(); }
}
new B().f(); // calls B#f();
new B().superF(); // calls A#f();
1
我有特技如這種情況下,以一個不合邏輯的方式在本功能使用標誌的參數(操作它)的方法:d,如下所示:
class A {
public void funct(boolean callSuper) {
// avoid using callSuper arg here
}
}
class B extends A {
@Override
public void funct(boolean callSuper) {
if (callSuper) {
super.funct(callSuper);
return;//if return type is void
} else {
//do here the functionality if the flag is false
}
}
}
或
class A {
public void funct() {
}
}
class B extends A {
private boolean callSuper = false;
@Override
public void funct() {
if (callSuper) {
super.funct(); // call A.funct() functionality
setCallSuper(false);
} else {
//do here the functionality of B.funct() if the flag is false
}
}
public void setCallSuper(boolean callSuper){
this.callSuper = callSuper;
}
}
相關問題
- 1. 從抽象超類調用重寫的子類的類方法
- 2. Java繼承:超類被「重寫」的子類的功能與不同的簽名
- 3. 在超類的子類中重寫的調用方法
- 4. Java超級方法調用子類型重寫方法
- 5. Java調用子類和超類
- 6. 重寫超和子類
- 7. PHP呼叫重寫子類功能
- 8. 從重寫的Java類調用方法。
- 9. 從Java中的子類構造函數調用超類
- 10. 調用子類從Java中
- 11. C++如何調用子類與功能,具有超類指針
- 12. 子類__init__重寫超類的
- 13. 是否有可能從Java的超類中調用子類的實例變量?
- 14. 從超類調用子類方法
- 15. Actionscript:從子類調用超類方法
- 16. 從超類Java實例化子類Java
- 17. Java子類過載不會從超類調用
- 18. 引用java中超類的子類
- 19. 在Matlab中使用超類功能修改子類屬性
- 20. Java - 從子類發送值到超類
- 21. 從超類功能返回子類定義
- 22. 如何從子類調用重寫的父類方法?
- 23. EmberJS:從子類的init方法調用父類的功能
- 24. 如何從父類調用子類功能PHP
- 25. java中,從超類
- 26. Java的繼承:在超類中調用子類方法
- 27. Java繼承:在超類中調用子類方法
- 28. Java:超類和子類
- 29. 調用類功能
- 30. 調用類功能
@ Dukeling我的意思是你不能從對象本身之外調用超類方法。 –
爲什麼你想這樣做呢? – Achrome
@AshwinMukhija我只是想了解實施情況,無論是否可行。 –