public class A {public static void main(String[] args) { B33 b=new B33();}}class B{ public B(){ System.out.println("我是B"); }}class B2 extends B{ public B2(){ System.out.println("我是B2"); }}class B33 extends B2{ public B33(){ System.out.println("我是B33"); }}知道答案的各位能不能告訴我下怎樣才能調(diào)用子類的無參構(gòu)造而不會調(diào)用父類的
3 回答
已采納

堯叔
TA貢獻(xiàn)77條經(jīng)驗(yàn) 獲得超201個(gè)贊
想法很有探索精神,但是很抱歉,據(jù)我所知是不可以的。
一定會調(diào)用,原因是這樣的。
因?yàn)樽宇惱^承了父類,那么就默認(rèn)的含有父類的公共成員方法和公共成員變量,這些方法和變量在子類里不再重復(fù)聲明。如果你初始化子類的時(shí)候,不初始化父類,那么你通過子類調(diào)用父類方法或變量的時(shí)候會出現(xiàn)什么情況呢?當(dāng)然就是拋異常阿!所以,Java虛擬機(jī)會在你初始化子類的時(shí)候默認(rèn)的初始化子類的父類。而且是一層一層的往上遞進(jìn)!
你想這樣調(diào)等價(jià)于繼承了父類的財(cái)產(chǎn)又要斷絕父子關(guān)系,合適嗎。

慕粉1730398278
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超1個(gè)贊
創(chuàng)建子類對象的時(shí)候,會調(diào)用構(gòu)造方法,是繼承關(guān)心,那么調(diào)用的順序就是先父類,后子類,
添加回答
舉報(bào)
0/150
提交
取消