封裝繼承多型總結
封裝
封裝按照我個人的理解,
- 將屬性私有化,
- 提供相應的getters和setters方法,
- 重toString方法
- 根據相關業務過載建構函式
優點:
- 遮蔽細節
- 提高安全性
在繼承中涉及到構造方法,構造方法沒有返回值型別,預設不寫時JVM會預設加上無參構造器,如果要使用帶參的構造方法,一定要寫出無參構造方法,這其中涉及到方法的過載
方法的過載
在同一個類中,方法名相同,形參型別不同(個數或型別) ,與返回值型別和許可權修飾符無關;
繼承
繼承:在一個類可以繼承另一個類的屬性和方法,子類可以選擇覆蓋父類的方法,並在這個基礎上擴充套件,可以繼承一個普通類 抽象類 或介面;繼承類通過extend 實現就介面通過implements實現
抽象類
抽象類是使用abstract修飾的類,其中會包含抽象方法, 抽象方法使用abstract修飾的方法,只有方法名,沒有方法體;
抽象類與抽象方法之間
抽象類中可能會有抽象方法,一個類中有抽象方法那麼這個類一定是抽象類;抽象方法存在與抽象類或介面
抽象類也是類,有構造方法,但是不能例項化物件,其中同樣有例項變數,例項方法
如果一個抽象類的子類沒有完全重寫父類的抽象方法那麼這個子類還是一個抽象方法,
抽象類只能單繼承,也就是說一個子類只有一個父類
所有類的最終父類(超類,基類)都是Object,
介面:
使用interface 定義介面,其中包含抽象方法,可以使用implement實現多個介面,重寫介面的抽象方法
介面的特點
- 介面的許可權修飾符只有public和預設
- 介面可以繼承多個介面,但不能繼承類
- 介面不能變數,只能定義常量,預設會加上public static static
- 介面中的方法不能使用private protect static final修飾編譯會報錯
- 在JDK1.8後接口中可以定義例項方法 使用default修飾方法
重寫
在繼承條件下,子類根據需求重寫父類的方法
重寫的要求:
- 重寫的方法名與父類的一致
- 引數類表相同
- 返回的引數型別相同或是其子類
- 許可權修飾符不能縮小
修飾符問題
abstract 不能修飾屬性和構造方法, 不能同時與private static final修飾一個方法或類
final 修飾的類不能被繼承,修飾方法不能被重寫,修飾屬性是常量不能改變,不能修飾構造方法
static 修飾的方法不能重寫,但是能繼承,
private 凡是private修飾的屬性或方法能繼承
預設的許可權修飾的屬性或方法 可以繼承 但必須在同一包的範圍內 可以修飾抽象類和介面 介面中不寫為public abstract
protected 不能修飾抽象類和介面,可以抽象類中的抽象方方法, 介面中的許可權修飾符只能是public abstract
構造方法不能繼承,只能通過子類構造方法預設呼叫或使用super呼叫
多型
在繼承條件下,具有多種行為表現的集合特徵
向上轉型
父類 object=new 子類(); 在繼承的條件將子類物件賦給父類物件,將父類的引用指向子類物件,
呼叫時:屬性呼叫的是父類的屬性,如果子類重寫了父類的的方法,呼叫的是子類的方法,否則呼叫的是父類的方法,不能呼叫子類新增的方法
向下轉型
向下轉型的前提是,父類已經向上轉型,否則會編譯錯誤,
父類 object=new 子類()
子類 subobj=object;
我目前還在學習,在學習期間努力每週寫一篇,以上部分為個人筆記和網路搜尋整理,由於學習任務多,加上個人語言組織能力不強,如果有錯誤請路過的大佬指出,也請見諒!!