子類(lèi)構(gòu)造函數(shù)必須調(diào)用父類(lèi)的構(gòu)造函數(shù),但是如果構(gòu)造函數(shù)有多個(gè)到底是調(diào)用哪個(gè)呢?如果子類(lèi)有顯式調(diào)用父類(lèi)構(gòu)造函數(shù),是不是就是說(shuō)父類(lèi)不管有沒(méi)有無(wú)參構(gòu)造函數(shù)都不會(huì)報(bào)錯(cuò)嗎?

腦洞已開(kāi)
2014-08-02
3 回答
舉報(bào)
0/150
提交
取消
2014-08-03
1.如果子類(lèi)未顯示調(diào)用父類(lèi)構(gòu)造函數(shù),則默認(rèn)只會(huì)調(diào)用父類(lèi)無(wú)參的構(gòu)造函數(shù)
2.如果子類(lèi)有顯式調(diào)用父類(lèi)構(gòu)造函數(shù),則只會(huì)調(diào)用指定的父類(lèi)構(gòu)造函數(shù),父類(lèi)可以沒(méi)有無(wú)參構(gòu)造函數(shù)
2015-07-25
1.當(dāng)子類(lèi)中隱式調(diào)用父類(lèi)的構(gòu)造方法,(即不寫(xiě)super();),則默認(rèn)調(diào)用父類(lèi)中的無(wú)參構(gòu)造方法
2.當(dāng)子類(lèi)中隱式調(diào)用父類(lèi)的構(gòu)造方法,而父類(lèi)中沒(méi)有無(wú)參的構(gòu)造方法,如只有有參的構(gòu)造方法,則系統(tǒng)會(huì)報(bào)錯(cuò)
3當(dāng)我們?cè)趧?chuàng)建父類(lèi)對(duì)象,在main方法中用的是有參的的構(gòu)造即:Animal a=new Animal(10);
在父類(lèi)中我們創(chuàng)建一個(gè)有參的構(gòu)造方法:
public Animal(int age1){
System.out.println("父類(lèi)的構(gòu)造方法執(zhí)行了!!!!!");
System.out.println(age1);
在子類(lèi)中我們調(diào)用super(10);
當(dāng)程序運(yùn)行時(shí),我們調(diào)用的就是父類(lèi)中有參的構(gòu)造方法了。
最后糾正一下,java中只有方法,沒(méi)有函數(shù)的叫法。
2014-08-06
3.當(dāng)父類(lèi)中寫(xiě)了有參構(gòu)造函數(shù),則父類(lèi)默認(rèn)的無(wú)參構(gòu)造函數(shù)被覆蓋。此時(shí)子類(lèi)必須顯式在構(gòu)造函數(shù)里調(diào)用父類(lèi)的有參構(gòu)造函數(shù)【super(參數(shù))放構(gòu)造函數(shù)第一句】。
建議:當(dāng)父類(lèi)有參構(gòu)造函數(shù)時(shí),建議寫(xiě)上無(wú)參構(gòu)造函數(shù)。