如果類A擴展B類和B類擴展C.,他們都有方法測試()
如何調用該方法測試考試的一個問題是,在C級在A班?
我愚蠢地選擇了。 Super.super.test()。我認爲這是錯誤的。
釷其他選項分別爲:
測試() Super.test()。我想過這個。但是,如果我使用它,它將調用B類中的方法,B類將調用C類中的方法,但我們只希望C
對不起,如果這不是很清楚或沒有組織完成考試,並有點暈。
如果類A擴展B類和B類擴展C.,他們都有方法測試()
如何調用該方法測試考試的一個問題是,在C級在A班?
我愚蠢地選擇了。 Super.super.test()。我認爲這是錯誤的。
釷其他選項分別爲:
測試() Super.test()。我想過這個。但是,如果我使用它,它將調用B類中的方法,B類將調用C類中的方法,但我們只希望C
對不起,如果這不是很清楚或沒有組織完成考試,並有點暈。
這是不可能的。只有通過調用超類方法,該方法又調用其超類中的方法(C)
這在C++中可能,但在Java中不可能。 super
總是將您重定向到直接父母。
你無法訪問超級超類的方法。如果B類在運行時自動覆蓋它,將運行B類中包含的兩條指令,如類C中所示。現在,如果確保B類中沒有實現指令,那麼只會自動執行C類。
如果B類具有您不想運行的指令,請通過更改名稱並使用標識super從類A運行來複制該方法。
在java中不允許使用super.super()
。嘗試這種方式,如果你真正想要的,你可以自己實現一個:
public class abc {
public void myName(){
System.out.println("abc");
}
}
public class def extends abc {
public void myName(boolean flag){
if(flag){
super.myName();
}else {
System.out.println("def");
}
}
}
public class mno {
public static void main(String[] args){
def d = new def();
System.out.print("This returns the so called 'super.super' : ");
d.myName(true);
}
}
輸出:這將返回所謂的「super.super」:ABC
我會想象下面會打印出「A」。我沒有一個方便的編譯器來試用它。
class A
{
private void test () { System . out . println ("A") ; }
public static void main (String [ ] args)
{
C c = new C () ;
c . test () ;
}
}
class B extends A
{
private void test () { System . out . println ("A") ; }
}
class C extends B
{
private void test () { System . out . println ("A") ; }
}
明天早上我會檢查。謝謝emory :) –
我知道它「shiii *」。問題是明確表示從盛大類調用的問題。如果我使用super(),它會調用父級和父級。這個問題是不公平的。 :( –
@MohammadFadin,有沒有「非上述」選項? –
是:(不要告訴我這是正確的答案:( –