一、面向對象的多態性
多態定義:
1.多態性是指“多種形式”,“一個對外接口,多個內在實現方法”。
2.當系統A訪問系統B的服務時,系統B可以通過多種實現方式來提供服務,而這一切對系統A是透明的。運用了動態綁定機制。
3.父類的某個方法被其子類重寫時,可以產生自己的行為。
4.一個對象變量可以指向多種實際類型的現象;發送消息給某個對象,讓該對象自行決定響應何種行為。
作用:實現接口和實現分離,有利于擴展和維護
二、對象的類型轉換
1.子類對象可以自動轉換成父類
2.父類轉換成子類必須使用強制轉換(可編譯,不可運行
3.instanceof操作符:判斷一個類是否實現了某個接口,也可以用來判斷一個實例對象是否屬于一個類。作用是測試它左邊的兌現是否是它右邊的類的實例
三、方法的重載Overload
如果類的方法(包括從父類中繼承的方法),同時存在一個以上的同名成員方法,只要它們的參數列表(數據類型,個數,順序)不同,即一個方法是另一個方法的重載方法
四、方法的重寫Overrite,也叫覆蓋
①如果子類的方法與父類中被子類訪問(繼承)的方法具有相同的方法名稱、參數列表和返回類型,即子類的方法重寫了父類的方法
總結 如果子類方法重寫了父類的方法那么必須保持方法名稱、參數列表、返回類型必須一致
②如果在子類中想調用父類中的那個被覆蓋的方法,我們可以用super方法的格式。
③覆蓋方法時,不能使用比父類中被覆蓋的方法更嚴格的訪問權限,父類方法用public子類次方法不能用private
④父類的非靜態方法不能被子類重寫為靜態方法
⑤父類的靜態方法不能被子類重寫為非靜態方法;
⑥子類隱藏了父類的靜態方法,不能重寫父類的靜態方法
隱藏的區別:JVM把靜態方法和所屬的類綁定,實例方法和所屬的實例綁定
⑦父類的私有方法不能被子類重寫繼承
五、抽象類與接口專題
Java中可以定義一些不含方法體的方法,它的方法體的實現交給該類的子類根據自己情況取實現,這樣方法就是抽象方法,它含抽象方法的類就叫抽象類。
abstract
①由abstract修飾的方法叫抽象方法;由abstract修飾的類叫抽象類
②抽象方法必須聲明在 抽象類中
③抽象方法語法:
abstract type method_name(parameter_list);
abstract 返回值類型 抽象方法(參數列表);
④聲明抽象類語法:abstract class{}
⑤使用:父類中的某些抽象不包含任何邏輯,并需要在子類中重寫,子類提供這種抽象方法的實現細節
父類的抽象方法可以被子類重寫
如何理解多態
1.定義
2.作用
實現接口和實現分離,有利于擴展和維護
3.原理
類的類型轉換一致,JVM的動態綁定一致,運用這種機制,可以提高系統的松耦合性
4.實現方式
重寫,重載
5.案例
重寫的十二條規則
1 子類從夫類繼承的方法
2 具有相同的方法名稱
3 參數列表相同
4 返回值類型一致
5 不能降低繼承發放的訪問權限
6 父類的靜態方法不能被子類重寫為非靜態方法
7 父類的非靜態方法不能被子類重寫為靜態方法
8 子類隱藏了父類的靜態方法,不能重寫父類的靜態方法
9 JVM把靜態的方法和所屬的類綁定,把實例對象和所屬的實例綁定
10 父類的私有方法不能被子類重寫
11 父類的非抽象方法可以被子類重寫為向后想方法
12 父類的抽象方法可以被子類重寫為非抽象方法或是抽象方法
案例如下:

2

3

4

5

6

7

8

9

如果一個抽象類中的所有方法都是抽象的,可以用接口定義。
接口是抽象方法和常量值的定義的集合,從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實現。
①接口就是某個事物對外提供的一些功能的聲明;
②可以利用接口實現多態,同時接口也彌補了java單一繼承的弱點
③使用接口聲明方法或常量,接口中的方法只能聲明,不能是具體的實現。
④使用Interface關鍵字定義接口,案例如下

2

3

4

5

6

7

8

9

10

11

12

13

14

15

面向對象設計的一個最核心的原則OCP(Open-Closed-Principle)
OCP---Open,對擴展開發;Close,對修改關閉。