繼承:
繼承的成員訪問特點:
子類繼承父類時,方法名稱不相同時,分別呼叫即可;當成員方法名稱一致時,先在子類中找,看是否有那個方法,如果有就呼叫子類的方法,如果沒有就直接呼叫父類的成員方法。
方法重寫: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框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...