java子類繼承父類實(shí)例 JAVA子類繼承父類,然后用父類去new這個子類的對象,這樣做的意義在哪?
JAVA子類繼承父類,然后用父類去new這個子類的對象,這樣做的意義在哪?例如,如果父類的構(gòu)造函數(shù)帶參數(shù),則子類的構(gòu)造函數(shù)中的第一句話是super(…)。注意:調(diào)用子類構(gòu)造函數(shù)時(shí),首先調(diào)用父類構(gòu)造函數(shù)
JAVA子類繼承父類,然后用父類去new這個子類的對象,這樣做的意義在哪?
例如,如果父類的構(gòu)造函數(shù)帶參數(shù),則子類的構(gòu)造函數(shù)中的第一句話是super(…)。注意:調(diào)用子類構(gòu)造函數(shù)時(shí),首先調(diào)用父類構(gòu)造函數(shù),然后調(diào)用子類構(gòu)造函數(shù)。如果要調(diào)用父類而不是子類的成員,可以:super。不創(chuàng)建父類的實(shí)例。如果你能創(chuàng)建一個父類的實(shí)例,我可以舉一個反例來說明這是錯誤的:當(dāng)父類是抽象類而子類不是抽象類時(shí),子類在調(diào)用構(gòu)造函數(shù)時(shí)也會調(diào)用父類構(gòu)造函數(shù),創(chuàng)建子類和父類的兩個實(shí)例。但是,抽象類不能實(shí)例化。原來的假設(shè)是錯誤的。因此,父類不會被創(chuàng)建為實(shí)例。理論理解:當(dāng)用構(gòu)造函數(shù)添加new時(shí),會創(chuàng)建一個對象(實(shí)例)。調(diào)用子類構(gòu)造函數(shù)時(shí),調(diào)用父類構(gòu)造函數(shù)是初始化子類從父類繼承的部分。此過程不對父類使用new,因此不會為父類創(chuàng)建對象(實(shí)例)。
java中允許子類的引用指向父類的對象嗎?比如A是父類B是子類 可以像這樣寫嗎: B b=new A()?
如果a是父類,B是子類,則是錯誤的。如果反過來是真的。
子類對象可以分配給聲明為父類的變量:A=new b(),但在這種情況下,A只能調(diào)用父類A中聲明的方法和屬性,而不能調(diào)用子類b中聲明的方法和屬性。如果這樣編寫,通常會發(fā)生類型轉(zhuǎn)換錯誤。你可以試試。建議看一下Java類型轉(zhuǎn)換,這一點(diǎn)非常清楚。
父類對象可以調(diào)用子類中的方法嗎?
編號
1。在創(chuàng)建新的子類對象時(shí),它首先執(zhí)行其父類的構(gòu)造方法,然后執(zhí)行其子類的構(gòu)造方法。
2. 我們將子類對象賦給父類(父類的引用指向子類對象,即Java中的多態(tài)性),父類對象不能調(diào)用子類方法,但如果子類重寫父類的方法,則父類調(diào)用子類方法。