W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
構(gòu)造函數(shù)不是類(lèi)的成員,它們不是由子類(lèi)繼承的。
它們用于初始化實(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()來(lái)立即調(diào)用父類(lèi)的無(wú)參數(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指的是類(lèi)的直接父類(lèi)。
我們可以調(diào)用超類(lèi)構(gòu)造函數(shù),只使用super關(guān)鍵字作為構(gòu)造函數(shù)中的第一個(gè)語(yǔ)句。
我們可以將超類(lèi)的no-args構(gòu)造函數(shù)或任何其他構(gòu)造函數(shù)顯式地調(diào)用為類(lèi)的構(gòu)造函數(shù)中的第一個(gè)語(yǔ)句。
只有在沒(méi)有明確添加的情況下,編譯器才會(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è)類(lèi)都必須直接或間接地從其構(gòu)造函數(shù)中調(diào)用其超類(lèi)的構(gòu)造函數(shù)。
如果超類(lèi)沒(méi)有no-args構(gòu)造函數(shù),我們必須顯式地調(diào)用超類(lèi)的任何其他構(gòu)造函數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: