成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

構(gòu)造函數(shù) C 子類調(diào)用父類構(gòu)造函數(shù)?

C 子類調(diào)用父類構(gòu)造函數(shù)?使用底座。在子類中,調(diào)用的類型必須與父類的類型相同。否則,將出現(xiàn)錯(cuò)誤。Class a{public a(int a,int b){}}}Class b:a{public b

C 子類調(diào)用父類構(gòu)造函數(shù)?

使用底座。在子類中,調(diào)用的類型必須與父類的類型相同。否則,將出現(xiàn)錯(cuò)誤。Class a{public a(int a,int b){}}}Class b:a{public b(int a,int b,int x,int y):base(a,b){}

例如,如果父類的構(gòu)造函數(shù)有參數(shù),子類的構(gòu)造函數(shù)中的第一句話是super(…)注意:調(diào)用子類構(gòu)造函數(shù)時(shí),會(huì)先調(diào)用父類構(gòu)造函數(shù),然后調(diào)用子類構(gòu)造函數(shù)。如果要調(diào)用父類而不是子類的成員,可以:super。不創(chuàng)建父類的實(shí)例。如果你能創(chuàng)建一個(gè)父類的實(shí)例,我可以舉一個(gè)反例來(lái)說(shuō)明這是錯(cuò)誤的:當(dāng)父類是抽象類而子類不是抽象類時(shí),子類在調(diào)用構(gòu)造函數(shù)時(shí)也會(huì)調(diào)用父類構(gòu)造函數(shù),創(chuàng)建子類和父類的兩個(gè)實(shí)例。但是,抽象類不能實(shí)例化。原來(lái)的假設(shè)是錯(cuò)誤的。因此,父類不會(huì)被創(chuàng)建為實(shí)例。理論理解:當(dāng)用構(gòu)造函數(shù)添加new時(shí),會(huì)創(chuàng)建一個(gè)對(duì)象(實(shí)例)。調(diào)用子類構(gòu)造函數(shù)時(shí),調(diào)用父類構(gòu)造函數(shù)是初始化子類從父類繼承的部分。此過(guò)程不對(duì)父類使用new,因此不會(huì)為父類創(chuàng)建對(duì)象(實(shí)例)。

子類調(diào)用父類的構(gòu)造函數(shù)有什么用?

未創(chuàng)建父類對(duì)象,但調(diào)用了父類的構(gòu)造函數(shù)。構(gòu)造函數(shù)只是一個(gè)成員方法,沒(méi)有什么特別之處。

如果查看字節(jié)碼,新建和調(diào)用構(gòu)造函數(shù)是兩個(gè)步驟。Java create object是new,call constructor是invokespecial<init>。這里還可以看到,在調(diào)用構(gòu)造函數(shù)時(shí),您已經(jīng)有了一個(gè)對(duì)象(new),因此調(diào)用構(gòu)造函數(shù)并不意味著創(chuàng)建一個(gè)新對(duì)象。

很多人誤解了這一點(diǎn)。還有這個(gè)。轉(zhuǎn)到其他對(duì)象。但是,如果您查看字節(jié)碼,它們實(shí)際上是對(duì)象的引用,但是類的名稱不同。說(shuō)白了,字節(jié)碼中沒(méi)有this和super關(guān)鍵字。如果是成員方法,則需要使用this或super,兩者都是0。

當(dāng)然,這只是一個(gè)字節(jié)碼,與真正的虛擬機(jī)執(zhí)行的最終代碼不同,但邏輯是這樣的,這并不妨礙我們理解它是如何工作的。

我讀了其他朋友的答案。如果您想根據(jù)父類對(duì)象的創(chuàng)建來(lái)理解它,沒(méi)有大問(wèn)題。從邏輯上講,我們可以認(rèn)為那里有一個(gè)父類對(duì)象,并且內(nèi)存中有父類的成員。