DAY10 復習
1.介面的特點:
- 我們使用interface關鍵字定義介面
- 我們使用implements關鍵字建立介面實作類與介面的實作關系
介面是父級,介面實作類是子級 - 介面實作類如果實作部分/不實作介面中的抽象方法,那么實作類是一個抽象類
介面實作類如果實作了介面所有的抽象方法,那么這個實作類是一個普通類 - 抽象類與介面都不可以實體化/創建物件
- 介面沒有建構式,實作類使用的super()是父類的無參構造
如果沒有明確指定父類,super()代表的才是Object的無參構造 - 介面中都是靜態常量,沒有成員變數,因為會默認拼接public static final
- 介面中都是抽象方法,默認會拼接public abstract
故此:靜態常量與抽象方法默認拼接的部分,可以省略不寫 - 介面不是類!!!
- 介面是用來制定規則的【有哪些功能?方法有引數嗎?有回傳值嗎?】
方法具體的實作交給介面的實作類去完成
2.介面與類的復雜關系
1. 類與類的關系
繼承關系,只支持單繼承
比如,A是子類 B是父類,A具備B所有的功能(除了父類的私有資源和構造方法)
子類如果要修改原有功能,需要重寫(方法簽名與父類一致 + 權限修飾符>=父類修飾符)
2. 類和介面的關系
實作關系.可以單實作,也可以多實作
class A implements B,C{}
其中A是實作類,B和C是介面,A擁有BC介面的所有功能,只是需要進行方法的重寫,否則A就是抽象類
3. 介面與介面的關系
是繼承關系,可以單繼承,也可以多繼承
interface A extends B,C{}
其中ABC都是介面,A是子介面,具有BC介面的所有功能(抽象方法)
class X implements A{}
X實作類需要重寫ABC介面的所有方法,否則就是抽象類
class A extends B implements C,D{}
其中A是實作類,也是B的子類,同時擁有CD介面的所有功能
這時A需要重寫CD介面里的所有抽象方法
4.介面與抽象類的區別
- 介面是一種用interface定義的型別
抽象類是一種用class定義的型別 - 介面中的方法都是抽象方法,還有默認方法與靜態方法
抽象類中的方法不做限制 - 介面中的都是靜態常量
抽象類中可以寫普通的成員變數 - 介面沒有構造方法,不可實體化
抽象類有構造方法,但是也不可以實體化 - 介面是先天設計的結果,抽象是后天重構的結果
- 介面可以多繼承
抽象類只能單繼承
3.內部類總結
- 內部類創建物件的格式:
外部類名.內部類名 物件名 = 外部類物件.內部類物件 - 根據內部類的位置不同,分為:
成員內部類(類里方法外)
區域內部類(方法里) - 內部類可以直接使用外部類的資源,外部類使用內部類資源時,
需要先創建內部類的物件,通過內部類物件來呼叫 - 成員內部類被private修飾后,需要在外部類創建公共方法,間接訪問內部類的資源
- 靜態內部類不需要先創建外部類物件,
而是要先通過外部類的類名找到內部類,再創建內部類的物件 - 如果靜態內部類有靜態資源,可以不創建一個物件,就通過
外部類名.內部類名.靜態資源名 的鏈式加載的方式,使用資源 - 直接創建外部類物件,呼叫區域內部類所處的方法時,并不會觸發內部類的功能
需要在內部類所處的方法中,創建內部類物件,并呼叫其功能,功能才會被觸發 - 匿名內部類沒有名字,通常與匿名物件結合在一起使用
- 如果想要多次使用實作后的功能,還是要創建之前的普通物件
匿名物件只能使用一次,一次只能呼叫一個功能
匿名內部類其實就是充當了實作類的功能,去實作未實作的方法,只是沒有名字而已
內部類詳細筆記
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/356158.html
標籤:其他
