一、多態的概念和前提
1、概念-什麼是多態
對象在不同時刻表現出的不同的狀態。
2、前提
A:要有繼承關係或實現關係
B:要有方法重寫或實現
C:要有父類引用指向子類對象,或父類接口指向子類對象
3、舉例:
狗是動物
二、多態的成員特點
1、成員變量
編譯看左邊,運行看左邊
Fu f=new Zi();
f.name;//調用的是父類的name
2、非靜態成員方法
Fu f=new Zi();
f.show();//調用的是子類的show
3、產生以上的原因
方法有重寫,變量沒有重寫
三、多態的弊端和好處
弊端:父類引用不能直接使用子類對象的特有功能。
解決方案: 向下轉型(強轉)
好處:增強了程序的擴展性和可維護行
四、轉型過程中出現的問題
五、抽象類和抽象方法
1、抽象方法
只有方法聲明,沒有方法體的方法成爲抽象方法,該方法用abstract修飾
2、抽象類
如果一個類中含有抽象方法,這個類就可以成爲抽象類,該類被abstract修飾
3、什麼時候定義抽象類
如果一個方法我們不確定他要做什麼,就把這個方法定義成抽象的,那麼這個類就被定義成抽象類
4、抽象類的基本特定
1)、抽象類抽象方法用abstract修飾
2)、有抽象方法的類一定是抽象類,抽象類中不一定有抽象方法
3)、抽象類不能被實例化
4)、如果一個類繼承抽象類,要麼本身是抽象類,要麼必須實現抽象方法
5)、抽象類的作用
強制子類必須完成某種功能
6、抽象類的成員特點
1)、成員變量:可以常量,可以變量
2)、構造方法
有構造方法,但是不能創建對象,只是用於子類訪問父類數據時,對父類的成員進行初始化。
3)、成員方法
可以有抽象方法,也可以有非抽象方法
六、接口
1、概念
我們可以把接口看成一種特殊的抽象類,比抽象更抽象。因爲它裏面的方法都是抽象的,但注意接口不是類,我們只是把它看成類
2、接口的基本特點
1)、接口不能被實例化。
2)、接口中的方法:
要麼被子類重寫。
3、接口的成員特點
1)、成員變量:接口中只有常量
因爲接口的成員變量有默認修飾符:public static final
推薦:永遠自己給出修飾符。
2)、構造方法
沒有構造方法//因爲接口中的成員變量都被final修飾,定義的時候必須做初始化
任何類如果沒有繼承父類,那麼這個類就繼承自Object類。//所有類都直接或者間接的繼承自Object類。Object類是所有類的超類
3)、成員方法:接口中的方法都是抽象的
因爲接口中的成員方法有默認修飾符:public abstract
推薦:永遠自己給出修飾符。4)、接口的注意事項接口中不能有靜態代碼塊,代碼塊,構造方法
1)、抽象類和接口的關係(掌握)
抽象類:
成員變量:可以是變量,也可以是常量。
構造方法:有構造方法。
成員方法:可以是抽象方法,也可以是非抽象方法。
接口:
成員變量:只能是常量。
默認修飾符:public static final
成員方法:只能是抽象方法。
默認修飾符:public abstract
2)、類與接口的關係(掌握)
類與類:
繼承關係,只能單繼承,可以多層繼承。
類與接口:
實現關係,可以單實現,也可以多實現。
還可以在繼承一個類的同時,實現多個接口。
接口與接口:
3)、設計理念的區別
抽象類被繼承,這個類中定義的是整個繼承體現的共性內容。
體現:is a
接口被實現,這個接口中定義的是整個體現的擴展內容。