面向對象(二)
阿新 • • 發佈:2017-08-13
使用 類對象 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,接口中定義的是擴展功能。
面向對象(二)