W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
構(gòu)造函數(shù)不是類的成員,它們不是由子類繼承的。
它們用于初始化實(shí)例變量。
class CSuper { public CSuper() { System.out.println("Inside CSuper() constructor."); } } class CSub extends CSuper { public CSub() { System.out.println("Inside CSub() constructor."); } } public class Main { public static void main(String[] args) { CSub cs = new CSub(); } }
上面的代碼生成以下結(jié)果。
下面顯示了如何編譯器注入一個(gè)super()來立即調(diào)用父類的無參數(shù)構(gòu)造函數(shù)。
class CSuper { public CSuper() { super(); // Injected by the compiler System.out.println("Inside CSuper() constructor."); } } class CSub extends CSuper { public CSub() { super(); // Injected by the compiler System.out.println("Inside CSub() constructor."); } } public class Main { public static void main(String[] args) { CSub cs = new CSub(); } }
上面的代碼生成以下結(jié)果。
關(guān)鍵字super指的是類的直接父類。
我們可以調(diào)用超類構(gòu)造函數(shù),只使用super關(guān)鍵字作為構(gòu)造函數(shù)中的第一個(gè)語句。
我們可以將超類的no-args構(gòu)造函數(shù)或任何其他構(gòu)造函數(shù)顯式地調(diào)用為類的構(gòu)造函數(shù)中的第一個(gè)語句。
只有在沒有明確添加的情況下,編譯器才會(huì)注入no-args構(gòu)造函數(shù)調(diào)用。
class Employee { private String name = "Unknown"; public Employee(String name) { this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return name; } } class Manager extends Employee { public Manager(String name) { super(name); } } public class Main { public static void main(String[] args) { Manager mgr = new Manager("Tom"); String name = mgr.getName(); System.out.println("Manager name: " + name); } }
上面的代碼生成以下結(jié)果。
每個(gè)類都必須直接或間接地從其構(gòu)造函數(shù)中調(diào)用其超類的構(gòu)造函數(shù)。
如果超類沒有no-args構(gòu)造函數(shù),我們必須顯式地調(diào)用超類的任何其他構(gòu)造函數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: