[英]Is there anyway in JAVA to execute Sub Class's Constructor before the Super Class's Constructor?
class Super
{
Super()
{
System.out.println("This is Super Constructor");
}
}
class Sub extends Super
{
Sub()
{
//super() is automatically added by the compiler here!
System.out.println("This is Sub Constructor");
//super(); I can't define it here coz it needs to be the first statement!
}
}
class Test
{
public static void main(String...args)
{
Sub s2=new Sub();
}
}
輸出:
這是超級構造函數
這是子構造函數
反正這樣做嗎?
還是您不能在Super()之前訪問Sub()?
我知道超級類或繼承的類首先被初始化,然后是子類,僅出於學習目的而這樣做!
在構造函數中,如果您自己未提供此調用,則編譯器將始終為您添加對super()
的調用。
如果使用反編譯器,則Sub構造函數將如下所示:
Sub()
{
super();
System.out.println("This is Sub Constructor");
}
所以不,這是不可能的。
它將始終始終先調用基類的構造函數(parent),然后再調用發起的類(child)。 在您的情況下, super()
將首先執行。
好讀: 父或子構造函數是第一個執行的?
正如其他答案所說的那樣。 不確定為什么要這樣做,但最好重新考慮一下實現,因為您總是希望確保繼承的字段首先被初始化,因為子類實現可能依賴於它。
如前所述,超級構造函數總是被調用。 也許您應該重寫您的問題並說明原因。
這是一個簡單的答案。 繼承的概念是關於IS-A關系的。 因此從技術上講,Dog類是Animal Class的孩子。 。 。 創建對象后,Dog類首先是一種動物,然后才被歸類為DOG
...希望這樣可以弄清楚事情。 。 所以不可能按照你的要求去做
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.