Java:抽象類與介面
阿新 • • 發佈:2018-11-26
程式設計中的抽象
- 表達一種概念而非實體
- 在一定程度上忽略細節而著眼大局(設計父類)
抽象類
- 使用關鍵字abstract修飾
- 抽象類的作用僅僅是表達介面,而不是具體的實現細節
抽象類無法制造出物件,但可以定義變數,存放非抽象子類的物件
抽象方法
- 抽象類中可以存在抽象方法。抽象方法也是使用abstract關鍵字來修飾
- 抽象的方法是不完全的,它只是一個方法簽名而完全沒有方法體
- 存在抽象方法的類即成為抽象類
他的子類必須重寫所有抽象方法,否則自身也成為一個抽象類
- 可以定義沒有抽象內容的抽象類,防止製造該類的物件
介面
- 介面是一種更抽象的純抽象類
- 所有方法均為抽象方法
- 所有變數均為public static final
- 介面不能實現(implements)另一個介面,但它可以繼承多個其它的介面
- 介面中的所有抽象方法為public
把類與介面分開來看,即不把介面視為一種類
- 類實現介面:實現所有抽象方法
- 介面繼承介面:表明當前類(介面)也擁有繼承來的所有抽象內容
即用於製造物件的類實現不了繼承介面的意義,只有介面繼承接口才有意義,繼承介面後重寫所有抽象方法即是實現介面,否則本身成為抽象類。(繼承或許可以用來獲得介面的類變數)
介面是一種間接的多繼承
當用一個介面型別的變數管理一個實現該介面的類時,只能呼叫到介面類的方法,即是介面型別是該變數的動態型別,符合造型的概念,因此介面符合類的概念
介面用來溝通不相容的類,使之產生恰當的關係
介面是更高級別的抽象 比如體現在 介面中的變數必須為(也預設為)public static final
方法必須為public
介面不能繼承純抽象類。Java 規定介面只能繼承介面 介面存在的意義 提供更高級別的抽象 對實現方法開放 對修改關閉
2018/7/20