子類(lèi)可以繼承父類(lèi)的哪些成員 JAVA中,子類(lèi)將繼承父類(lèi)的所有屬性和方法嗎?
JAVA中,子類(lèi)將繼承父類(lèi)的所有屬性和方法嗎?無(wú)法繼承私有屬性和方法。它可以繼承public、default和protected的屬性和方法。因?yàn)楦割?lèi)是子類(lèi)的模板,它當(dāng)然可以繼承,但是private只
JAVA中,子類(lèi)將繼承父類(lèi)的所有屬性和方法嗎?
無(wú)法繼承私有屬性和方法。它可以繼承public、default和protected的屬性和方法。因?yàn)楦割?lèi)是子類(lèi)的模板,它當(dāng)然可以繼承,但是private只對(duì)類(lèi)本身有可見(jiàn)性,所以子類(lèi)不能繼承它的方法和屬性。
關(guān)于java中子類(lèi)繼承父類(lèi)的構(gòu)造方法?
你的老師是對(duì)的,但我說(shuō)不清楚。我舉個(gè)例子。類(lèi)a{public a(){}//1:無(wú)參數(shù)構(gòu)造方法。Public a(string s){}//2.}類(lèi)B擴(kuò)展了a{Public B(string s){super(s)//3.}注意:如果位置1中沒(méi)有無(wú)參數(shù)構(gòu)造方法,則必須在位置3中主動(dòng)調(diào)用具有父類(lèi)參數(shù)的構(gòu)造方法。如果有一個(gè)構(gòu)造方法,那么這三個(gè)代碼可以省略,因?yàn)槟J(rèn)情況下Java會(huì)自動(dòng)調(diào)用父類(lèi)的無(wú)參數(shù)構(gòu)造方法。請(qǐng)記住,在構(gòu)造子類(lèi)時(shí),必須調(diào)用父類(lèi)的構(gòu)造函數(shù)。所以父類(lèi)或者有一個(gè)默認(rèn)的無(wú)參數(shù)構(gòu)造,所以Java會(huì)自動(dòng)調(diào)用這個(gè)無(wú)參數(shù)構(gòu)造。如果父類(lèi)沒(méi)有無(wú)參數(shù)構(gòu)造,則需要在子類(lèi)的構(gòu)造中通過(guò)super()調(diào)用父類(lèi)的構(gòu)造。
JAVA子類(lèi)繼承父類(lèi),然后用父類(lèi)去new這個(gè)子類(lèi)的對(duì)象,這樣做的意義在哪?
例如,如果父類(lèi)的構(gòu)造函數(shù)帶參數(shù),則子類(lèi)的構(gòu)造函數(shù)中的第一句話是super(…)。注意:調(diào)用子類(lèi)構(gòu)造函數(shù)時(shí),首先調(diào)用父類(lèi)構(gòu)造函數(shù),然后調(diào)用子類(lèi)構(gòu)造函數(shù)。如果要調(diào)用父類(lèi)而不是子類(lèi)的成員,可以:super。不創(chuàng)建父類(lèi)的實(shí)例。如果你能創(chuàng)建一個(gè)父類(lèi)的實(shí)例,我可以舉一個(gè)反例來(lái)說(shuō)明這是錯(cuò)誤的:當(dāng)父類(lèi)是抽象類(lèi)而子類(lèi)不是抽象類(lèi)時(shí),子類(lèi)在調(diào)用構(gòu)造函數(shù)時(shí)也會(huì)調(diào)用父類(lèi)構(gòu)造函數(shù),創(chuàng)建子類(lèi)和父類(lèi)的兩個(gè)實(shí)例。但是,抽象類(lèi)不能實(shí)例化。原來(lái)的假設(shè)是錯(cuò)誤的。因此,父類(lèi)不會(huì)被創(chuàng)建為實(shí)例。理論理解:當(dāng)用構(gòu)造函數(shù)添加new時(shí),會(huì)創(chuàng)建一個(gè)對(duì)象(實(shí)例)。調(diào)用子類(lèi)構(gòu)造函數(shù)時(shí),調(diào)用父類(lèi)構(gòu)造函數(shù)是初始化子類(lèi)從父類(lèi)繼承的部分。此過(guò)程不對(duì)父類(lèi)使用new,因此不會(huì)為父類(lèi)創(chuàng)建對(duì)象(實(shí)例)。