1.什么是繼承瞬捕?
繼承就是子類繼承父類的特征和行為盹靴,使得子類對象具有父類的屬性和方法膘魄。
語法:children extends parent
子類構(gòu)造方法完成子類對象的實(shí)例化時(shí)昧港,會(huì)遞歸的調(diào)用父類的構(gòu)造方法崖技,構(gòu)造方法不能重寫
Java是單繼承(直接父類)的逻住,但可以多重繼承(間接父類)
繼承有什么好處?
1.減少代碼的冗余响疚,提高代碼的復(fù)用性
2.便于功能的擴(kuò)展
2.super和this關(guān)鍵字有什么作用鄙信?
super. 調(diào)用父類中的變量和方法
super(參數(shù)列表) 調(diào)用具有對應(yīng)參數(shù)列表的父類構(gòu)造方法。
this. 調(diào)用類自己變量或者方法
this(參數(shù)列表) 調(diào)用類自己具有對應(yīng)參數(shù)列表的構(gòu)造方法
return this; 可以返回本類對象的方法操作
this(形參列表):本類重載的其它的構(gòu)造器
super(形參列表):調(diào)用父類中指定的構(gòu)造器
什么是多態(tài)性忿晕?什么是虛擬方法調(diào)用装诡?
Parent p = new Children();
1)可以理解為一個(gè)事物的多種形態(tài)。
2)什么是對象的多態(tài)性:父類的引用指向子類的對象
3)有了對象的多態(tài)性以后践盼,我們在編譯期鸦采,只能調(diào)用父類中聲明的方法,但在運(yùn)行期咕幻,我們實(shí)際執(zhí)行的是子類重寫父類的方法渔伯。
總結(jié):編譯,看左邊肄程;運(yùn)行锣吼,看右邊。
4)多態(tài)性的使用前提: ① 類的繼承關(guān)系 ② 方法的重寫
5)對象的多態(tài)性蓝厌,只適用于方法玄叠,不適用于屬性(編譯和運(yùn)行都看左邊)
子類能否獲取父類中private權(quán)限的屬性或方法?
可以獲取private拓提,但是不能夠調(diào)用private读恃!
多態(tài)是編譯時(shí)行為還是運(yùn)行時(shí)行為?
運(yùn)行時(shí)行為
3.向上轉(zhuǎn)型和向下轉(zhuǎn)型是什么代态?
向上轉(zhuǎn)型 Param ad= new Children();
當(dāng)使用父類創(chuàng)建對象寺惫,并將其引用指向子類對象時(shí),稱作向上轉(zhuǎn)型
向下轉(zhuǎn)型 Children param = (Children) param;
通過類型強(qiáng)制轉(zhuǎn)換蹦疑,可以將向上轉(zhuǎn)型的父類對象轉(zhuǎn)換為子類對象西雀,這時(shí)該子類對象又具有了子類所有新增的變量和方法。
4.什么是抽象類和抽象方法歉摧?
抽象類不能實(shí)例化對象蒋搜,所以抽象類必須被繼承篡撵,才能被使用。
用關(guān)鍵字abstract修飾的類就是抽象類豆挽。
abstract類中可以有abstract方法育谬,abstract方法只允許聲明,不允許實(shí)現(xiàn)帮哈,而且不能使用final修飾abstract方法膛檀。
abstract類不能用new運(yùn)算符創(chuàng)建對象,必須產(chǎn)生它的子類娘侍,由子類創(chuàng)建對象咖刃,并且子類必須具體實(shí)現(xiàn)它的abstract方法。
5.怎么使用反射憾筏?
通過反射機(jī)制能夠通過實(shí)例化對象獲取到類中具有的屬性和方法嚎杨,進(jìn)而調(diào)用類中的方法。
使用對象的.getClass()方法氧腰,獲取類的Class對象枫浙,使用getDeclaredMethod獲取類中的方法。
6.String古拴、StringBuffer箩帚、StringBuilder有什么區(qū)別?
String:不可變的字符序列黄痪、底層使用char[]數(shù)組存儲(chǔ)的
StringBuffer:可變的字符序列紧帕、線程是安全的,但是效率較低桅打,底層使用char[]數(shù)組存儲(chǔ)的
StringBuilder:可變的字符序列是嗜、線程是不安全的,但是效率較高挺尾,底層使用char[]數(shù)組存儲(chǔ)的