1. 程式人生 > >面向對象(二)

面向對象(二)

使用 類對象 light str 初始化 共存 ron 局部變量 pub

final關鍵字(掌握)

1、是最終的意思,可以修飾類,方法,變量。
	2、特點:
		A:它修飾的類,不能被繼承。
		B:它修飾的方法,不能被重寫。
		C:它修飾的變量,是一個常量。
	3、面試相關:
		A:局部變量
			a:基本類型 值不能發生改變
			b:引用類型 地址值不能發生改變,但是對象的內容是可以改變的
		B:初始化時機
			a:只能初始化一次。
			b:常見的給值
				定義的時候。(推薦)
				構造方法中。

多態(掌握)

	1、同一個對象在不同時刻體現出來的不同狀態。
	2、多態的前提:
		A:有繼承或者實現關系。
		B:有方法重寫。
		C:有父類或者父接口引用指向子類對象。
		
		多態的分類:
			a:具體類多態
				class Fu {}
				class Zi extends Fu {}
				
				Fu f = new Zi();
			b:抽象類多態
				abstract class Fu {}
				class Zi extends Fu {}
				
				Fu f = new Zi();
			c:接口多態
				interface Fu {}
				class Zi implements Fu {}
				
				Fu f = new Zi();
	3、多態中的成員訪問特點
		A:成員變量
			編譯看左邊,運行看左邊
		B:構造方法
			子類的構造都會默認訪問父類構造
		C:成員方法
			編譯看左邊,運行看右邊
		D:靜態方法
			編譯看左邊,運行看左邊
			
		為什麽?
			因為成員方法有重寫。
	4、多態的好處:
		A:提高代碼的維護性(繼承體現)
		B:提高代碼的擴展性(多態體現)
	5、多態的弊端:
		父不能使用子的特有功能。
		
		現象:
			子可以當作父使用,父不能當作子使用。
	6、多態中的轉型
		A:向上轉型
			從子到父
		B:向下轉型
			從父到子
	7、孔子裝爹的案例幫助大家理解多態

抽象類(掌握)

	1、把多個共性的東西提取到一個類中,這是繼承的做法。
	   但是呢,這多個共性的東西,在有些時候,方法聲明一樣,但是方法體不同。
	   也就是說,方法聲明一樣,但是每個具體的對象在具體實現的時候內容不一樣。
	   所以,我們在定義這些共性的方法的時候,就不能給出具體的方法體。
	   而一個沒有具體的方法體的方法是抽象的方法,形容抽象的不存在的事物。
	   在一個類中如果有抽象方法,該類必須定義為抽象類。
	2、抽象類的特點
		A:抽象類和抽象方法必須用關鍵字abstract修飾
		B:抽象類中不一定有抽象方法,但是有抽象方法的類一定是抽象類
		C:抽象類不能實例化
		D:抽象類的子類
			a:是一個抽象類。
			b:是一個具體類。這個類必須重寫抽象類中的所有抽象方法。
	3、抽象類的成員特點:
		A:成員變量
			有變量,有常量
		B:構造方法
			有構造方法
		C:成員方法
			有抽象,有非抽象
	4、抽象類的幾個小問題
		A:抽象類有構造方法,不能實例化,那麽構造方法有什麽用?
			用於子類訪問父類數據的初始化
		B:一個類如果沒有抽象方法,卻定義為了抽象類,有什麽用?
			為了不讓創建對象
		C:abstract不能和哪些關鍵字共存
			a:final	沖突
			b:private 沖突
			c:static 無意義

接口(掌握)

1、回顧貓狗案例,它們僅僅提供一些基本功能。
	   比如:貓鉆火圈,狗跳高等功能,不是動物本身就具備的,
	   是在後面的培養中訓練出來的,這種額外的功能,java提供了接口表示。
	2、接口的特點:
		A:接口用關鍵字interface修飾
			interface 接口名 {}
		B:類實現接口用implements修飾
			class 類名Impl implements 接口名 {}
		C:接口不能實例化
		D:接口的實現類
			a:是一個抽象類。
			b:是一個具體類,這個類必須重寫接口中的所有抽象方法。
	3、接口的成員特點:
		A:成員變量
			只能是常量
			默認修飾符:public static final
		B:構造方法
			沒有構造方法
		C:成員方法
			只能是抽象的
			默認修飾符:public abstract
	4、類與類,類與接口,接口與接口
		A:類與類
			繼承關系,只能單繼承,可以多層繼承
		B:類與接口
			實現關系,可以單實現,也可以多實現。
			還可以在繼承一個類的同時,實現多個接口
		C:接口與接口
			繼承關系,可以單繼承,也可以多繼承
	5、抽象類和接口的區別(自己補齊)?
		A:成員區別
			抽象類:
			接口:常量
		B:關系區別:
			類與類:
			類與接口:
			接口與接口:
		C:設計理念不同
			抽象類:is a,抽象類中定義的是共性功能。
			接口:like a,接口中定義的是擴展功能。

面向對象(二)