面向對象繼承
第一次課
一、 繼承的優點
優點:提高代碼的可重用性
1、 如何判斷A、B類之間是繼承關系?
符合 is…a關系
2、java中,所有的類都直接或間接的繼承了java.lang.Object類
3、 java中,私有的成員和構造方法沒有被子類繼承
缺省權限的成員,不能被其他包中的子類繼承
二、如何實現繼承
1、 將多個類中的共同的成員,提取出來放到一個公共的類(父類、超類、基類),自己只保留特有的成員
2、 多個類(子類、派生類),繼承(extends) 公共類
訪問修飾符class 子類 extends 父類{
}
說明:class前面的訪問修飾符不能為private、protected
三、繼承的2大特性
1、 單一性:一個類只能直接繼承一個父類
2、 傳遞性:一個類可以間接的繼承多個類(子類可以調用父類的父類…中的成員)
四、子類如何調用父類的成員
1、public屬性
super.屬性名
2、構造方法
super(【值】);
子類隱式(自動)查找並調用父類的無參數的構造方法
3、 其他方法
super.方法名([值]);
第二次課
一、 方法重寫
1、 概念—對從父類繼承過來的方法進行重新編寫
2、 常見面試題:構造方法可以重寫嗎?為什麽?
3、 方法重載(overloading)和方法重寫(overriding)的區別和聯系?
方法重載,
在同一個類中(也可以在繼承關系中),方法名相同,參數列表(個數、類型)不同,不能根據方法的返回類型和訪問修飾符不同,而判定是方法重載
方法重寫(方法覆蓋),
是對從父類繼承過來的方法進行重新編寫,
重寫方法時,方法名、參數列表、返回類型必須和要重寫的父類方法保持一致,訪問修飾符可以不同,但訪問權限必須要比父類要大
4、 訪問修飾符4個(按權限從小到大排列)
private(私有的)< friendly(缺省的)< protected(受保護的)< public(公共的)
二、 在繼承關系中,構造方法執行順序
1、 在繼承中,創建子類對象時,會自動調用父類的無參數的構造方法
2、 子類和父類同時存在有構造方法時,它們的執行順序?
實例化子類對象時,先執行父類中無參數的構造方法,然後再執行子類中的構造方法
3、在子類構造方法中,使用super關鍵字調用父類的有參數的構造方法,子類將不會再自動調用父類的無參數的構造方法
第三次課
一、 抽象類和抽象方法
1、 抽象方法——方法用abstract修飾
a) 抽象方法,必須位於抽象類中
b) 抽象方法,沒有方法體{}
c) 抽象方法,必須被子類重寫
2、 抽象類——類名用abstract修飾
a) 作用:
一般用來做父類通過抽象方法來約束子類的行為
b) 使用時註意事項:
l 有抽象方法的類,肯定是抽象類
l 抽象類不能被實例化(創建對象)
l 抽象類中可以包含抽象方法和非抽象方法
l 抽象類中的非抽象方法,子類可以有選擇性的重寫,抽象方法,必須被子類重寫
二、 final修飾符
1、 final修飾的變量——常量
2、 final修飾的類——密封類或封閉類
封閉類不能被其他類繼承
3、final修飾的——封閉方法,不能被子類重寫
面向對象繼承