1:final關(guān)鍵字(掌握)
(1)是最終的意思球涛,可以修飾類(lèi)劣针,方法,變量亿扁。
(2)特點(diǎn):
A:它修飾的類(lèi)捺典,不能被繼承。
B:它修飾的方法从祝,不能被重寫(xiě)襟己。
C:它修飾的變量,是一個(gè)常量牍陌。
(3)面試相關(guān):
A:局部變量
a:基本類(lèi)型 值不能發(fā)生改變
b:引用類(lèi)型 地址值不能發(fā)生改變擎浴,但是對(duì)象的內(nèi)容是可以改變的
B:初始化時(shí)機(jī)
a:只能初始化一次。
b:常見(jiàn)的給值
定義的時(shí)候毒涧。(推薦)
構(gòu)造方法中贮预。
2:多態(tài)(掌握)
(1)同一個(gè)對(duì)象在不同時(shí)刻體現(xiàn)出來(lái)的不同狀態(tài)。
(2)多態(tài)的前提:
A:有繼承或者實(shí)現(xiàn)關(guān)系。
B:有方法重寫(xiě)仿吞。
C:有父類(lèi)或者父接口引用指向子類(lèi)對(duì)象滑频。
多態(tài)的分類(lèi):
a:具體類(lèi)多態(tài)
class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
b:抽象類(lèi)多態(tài)
abstract class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
c:接口多態(tài)
interface Fu {}
class Zi implements Fu {}
Fu f = new Zi();
(3)多態(tài)中的成員訪問(wèn)特點(diǎn)
A:成員變量
編譯看左邊,運(yùn)行看左邊
B:構(gòu)造方法
子類(lèi)的構(gòu)造都會(huì)默認(rèn)訪問(wèn)父類(lèi)構(gòu)造
C:成員方法
編譯看左邊茫藏,運(yùn)行看右邊
D:靜態(tài)方法
編譯看左邊误趴,運(yùn)行看左邊
為什么?
因?yàn)槌蓡T方法有重寫(xiě)。
(4)多態(tài)的好處:
A:提高代碼的維護(hù)性(繼承體現(xiàn))
B:提高代碼的擴(kuò)展性(多態(tài)體現(xiàn))
(5)多態(tài)的弊端:
父不能使用子的特有功能务傲。
現(xiàn)象:
子可以當(dāng)作父使用凉当,父不能當(dāng)作子使用。
(6)多態(tài)中的轉(zhuǎn)型
A:向上轉(zhuǎn)型
從子到父
B:向下轉(zhuǎn)型
從父到子
(7)孔子裝爹的案例幫助大家理解多態(tài)
(8)多態(tài)的練習(xí)
A:貓狗案例
B:老師和學(xué)生案例
3:抽象類(lèi)(掌握)
(1)把多個(gè)共性的東西提取到一個(gè)類(lèi)中售葡,這是繼承的做法看杭。
但是呢,這多個(gè)共性的東西挟伙,在有些時(shí)候楼雹,方法聲明一樣,但是方法體尖阔。
也就是說(shuō)贮缅,方法聲明一樣,但是每個(gè)具體的對(duì)象在具體實(shí)現(xiàn)的時(shí)候內(nèi)容不一樣介却。
所以谴供,我們?cè)诙x這些共性的方法的時(shí)候,就不能給出具體的方法體齿坷。
而一個(gè)沒(méi)有具體的方法體的方法是抽象的方法桂肌。
在一個(gè)類(lèi)中如果有抽象方法,該類(lèi)必須定義為抽象類(lèi)永淌。
(2)抽象類(lèi)的特點(diǎn)
A:抽象類(lèi)和抽象方法必須用關(guān)鍵字abstract修飾
B:抽象類(lèi)中不一定有抽象方法,但是有抽象方法的類(lèi)一定是抽象類(lèi)
C:抽象類(lèi)不能實(shí)例化
D:抽象類(lèi)的子類(lèi)
a:是一個(gè)抽象類(lèi)崎场。
b:是一個(gè)具體類(lèi)。這個(gè)類(lèi)必須重寫(xiě)抽象類(lèi)中的所有抽象方法遂蛀。
(3)抽象類(lèi)的成員特點(diǎn):
A:成員變量
有變量谭跨,有常量
B:構(gòu)造方法
有構(gòu)造方法
C:成員方法
有抽象,有非抽象
(4)抽象類(lèi)的練習(xí)
A:貓狗案例練習(xí)
B:老師案例練習(xí)
C:學(xué)生案例練習(xí)
D:員工案例練習(xí)
(5)抽象類(lèi)的幾個(gè)小問(wèn)題
A:抽象類(lèi)有構(gòu)造方法李滴,不能實(shí)例化螃宙,那么構(gòu)造方法有什么用?
用于子類(lèi)訪問(wèn)父類(lèi)數(shù)據(jù)的初始化
B:一個(gè)類(lèi)如果沒(méi)有抽象方法,卻定義為了抽象類(lèi),有什么用?
為了不讓創(chuàng)建對(duì)象
C:abstract不能和哪些關(guān)鍵字共存
a:final 沖突
b:private 沖突
c:static 無(wú)意義
4:接口(掌握)
(1)回顧貓狗案例悬嗓,它們僅僅提供一些基本功能污呼。
比如:貓鉆火圈裕坊,狗跳高等功能包竹,不是動(dòng)物本身就具備的,
是在后面的培養(yǎng)中訓(xùn)練出來(lái)的,這種額外的功能周瞎,java提供了接口表示苗缩。
(2)接口的特點(diǎn):
A:接口用關(guān)鍵字interface修飾
interface 接口名 {}
B:類(lèi)實(shí)現(xiàn)接口用implements修飾
class 類(lèi)名 implements 接口名 {}
C:接口不能實(shí)例化
D:接口的實(shí)現(xiàn)類(lèi)
a:是一個(gè)抽象類(lèi)。
b:是一個(gè)具體類(lèi)声诸,這個(gè)類(lèi)必須重寫(xiě)接口中的所有抽象方法酱讶。
(3)接口的成員特點(diǎn):
A:成員變量
只能是常量
默認(rèn)修飾符:public static final
B:構(gòu)造方法
沒(méi)有構(gòu)造方法
C:成員方法
只能是抽象的
默認(rèn)修飾符:public abstract
(4)類(lèi)與類(lèi),類(lèi)與接口,接口與接口
A:類(lèi)與類(lèi)
繼承關(guān)系,只能單繼承彼乌,可以多層繼承
B:類(lèi)與接口
實(shí)現(xiàn)關(guān)系泻肯,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)慰照。
還可以在繼承一個(gè)類(lèi)的同時(shí)灶挟,實(shí)現(xiàn)多個(gè)接口
C:接口與接口
繼承關(guān)系,可以單繼承毒租,也可以多繼承
(5)抽象類(lèi)和接口的區(qū)別(自己補(bǔ)齊)?
A:成員區(qū)別
抽象類(lèi):
接口:
B:關(guān)系區(qū)別:
類(lèi)與類(lèi):
類(lèi)與接口:
接口與接口:
C:設(shè)計(jì)理念不同
抽象類(lèi):is a稚铣,抽象類(lèi)中定義的是共性功能。
接口:like a墅垮,接口中定義的是擴(kuò)展功能惕医。
(6)練習(xí):
A:貓狗案例,加入跳高功能
B:老師和學(xué)生案例算色,加入抽煙功能