JavaSE day06繼承 多型 抽象類

2021-08-21 13:33:24 字數 2999 閱讀 3206

繼承:

繼承的成員訪問特點:

子類繼承父類時,方法名稱不相同時,分別呼叫即可;當成員方法名稱一致時,先在子類中找,看是否有那個方法,如果有就呼叫子類的方法,如果沒有就直接呼叫父類的成員方法。

方法重寫:override,繼承裡邊的技術。

當子類出現和父類相同的方法時,子類會覆蓋掉父類的方法,呼叫子類的功能。

方法過載:overload,方法裡邊的

在方法中,出現多個方法名相同並且他們引數列表不同,與返回值無關

引數列表不同分為:引數型別不同引數個數不同

final關鍵字:

在實際開發中,有些方法不能直接覆蓋掉,不想讓子類重寫父類的方法,那麼就引出final關啊鍵字(可以修飾類,變數,成員方法)

final的用法:

final可以修飾類,但是該類不能被繼承

final可以修飾變數(成員變數,區域性變數),但是該變數此時變成了乙個常量。

final可以修飾成員方法,但是該方法不能被重寫。

多型:某個事物在不同時刻體現出不同的狀態。

多型的前提:

1)必須有繼承關係

2)必須方法重寫(貓狗案例:裡邊每種動物吃的食物不同)

3)必須要有父類指向引用子類物件:     向上轉型

格式:         父類名     父類方法名=new 子類名();

多型中的成員訪問特點:

1)成員變數的訪問特點: 編譯看左,執行看左(父類) (用父類物件名呼叫子類的方法)

2)成員方法(一般沒有靜態修飾的都是非靜態的)訪問特點:編譯看左,執行看右。

3)構造方法:作用就是給物件進行初始化。

4)靜態的成員方法訪問特點:編譯看左,執行看左(靜態成員方法不算方法重寫,靜態成員方法都和類有關)

多型的優點:

1)提高**的擴充套件性(由多型保證)

2)提高**的維護性(由繼承保證)

多型的弊端:  不能訪問子類特有的功能(方法)

解決方案:向下轉型,將父類的物件強制轉換為子類的引用

格式: 子類名  子類物件名=(子類名)父類物件名;

出現異常:classcastexception(型別轉換異常)

抽象類:關鍵字abstract

比如貓狗案例中,每種動物吃的食物都不一樣,所以在當前類中只給出乙個方法宣告(沒有具體的方法體)

在乙個類中給出乙個抽象的功能(方法),那麼這個類一定是抽象類。但是抽象類中可以有非抽象的方法

抽象類的格式  :

abstract  class  父類名{

抽象方法的格式:

public  abstract(必須寫)  方法()  ;注:沒有方法體。

抽象類的特點:

1·  抽象類不能例項化(不能直接建立物件);

2·  子類必須重寫父類的抽象功能    

抽象類的子類:

1·抽象類的子類如果是個抽象類,沒有任何意義,因為就是要通過具體類來建立物件,而子類是抽象類的化,就不能建立物件

2·抽象類的子類是具體類,那麼建立物件就由子類完成:格式:      子類名  子類物件名=new  子類名();抽象類多型。

實際工作中:   介面多型,抽象類多型,具體類物件的建立。

抽象類的成員特點:

成員變數:可以是變數也可以是自定義的常量。

構造方法:作用就是給物件進行初始化       1)預設初始化               2)顯示初始化

成員方法:可以是抽象的。也可以是非抽象的。

介面:將一些額外(擴充套件)的功能暴露出來,只要那個類實現了這個介面,就要去實現介面中的功能、

格式:inte***ce  介面名{}

介面的子實現類: 

1)介面的子實現類不能是抽象的,因為介面本身不能例項化,需要子實現類來進行例項化,而子實現類如果是抽象的介面,那麼就沒有意義。

2)介面的子實現類是具體類    

格式:       介面名   物件名=new   子實現類名();   介面多型(使用的比較多)

實際開發中的命名規則:

實現類命名: 介面名+impl

介面的成員訪問特點:

1)成員變數:存在預設的修飾符   public  static final

2)構造方法:介面中沒有構造方法

3)成員方法:預設修飾符public  abstract (抽象的方法)

類與類,類與介面,介面與介面之間的關係:

1)類與類之間是繼承(extends)關係:只支援單繼承不支援多繼承,但是支援多層繼承。

2)類與介面之間是實現(implements)關係:乙個類繼承乙個類的同時可以實現多個介面(class son extends father  implements  inter1,inter2)

3)介面和介面之間是繼承(extends)關係:支援單繼承,也支援多繼承

例子:老師和學生案例,加入額外的抽菸功能。

分析:從具體到抽象:

老師類: (具體)

姓名,年齡,性別

構造方法:有參/無參

提供get***/set***公共訪問方法

其他功能。

學生類:(具體)

姓名,年齡,性別

構造方法:有參/無參

提供get***/set***公共訪問方法

其他功能

人類:(抽象) 

姓名,年齡,性別

構造方法:有參/無參

提供get***/set***公共訪問方法

其他功能。

介面: 抽菸功能(抽象)

程式實現則是從抽象到具體:

先定義乙個抽象的人類

06 繼承與多型 動手動腦

1.怎樣判斷物件是否可以轉換?可以使用instanceof運算子判斷乙個物件是否可以轉換為指定的型別。例 1 public class testinstanceof 220 程式執行結果 2.現有三個類 class mammal class dog extends mammal class cat ...

C 多型 繼承多型

什麼是多型?個人理解為 在程式語言繼承關係中,子類能替代父類,表現出不同的行為。換句話說 在繼承關係中,乙個類被例項化被其子類替代,子類中有父類的虛方法重寫,或者有父類同名方法 new 呼叫相同方法時候,將表現出子類或者父類中不同行為 老闆,上 static void main string arg...

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...