面向對象基本特征
阿新 • • 發佈:2018-10-15
必須 類型 不知道 不可 計算 系統封裝 子類 ext 私有化
封裝
1、把對象的屬性、行為封裝起來,其載體是類。
屬性封裝:private 私有化
行為封裝:方法,封裝的是一個獨立的功能,一段代碼。
對於調用者來說,隱藏了實現細節;暴露一些方法的簽名供開發者調用。
2、廣義的封裝
組件封裝:對方給你開放了接口,你按照它規定的格式,把數據傳給它,它計算完,並把結果返回。
例如:第三方組件、支付寶、網銀支付。。。。
系統封裝:對使用者來說,不知道實現細節,但是知道怎麽用。
標準的javaBean
(1)屬性私有化
(2)提供get/set方法
(3)保留無參構造
繼承(延續:相同點、擴展:特有點)
為什麽有繼承?
1、為了代碼復用和功能擴展
如何實現繼承?
[修飾符] 子類名 extends 父類名{}
繼承的特點?
1、java只支持單繼承。
2、java支持多層繼承。
3、父類可以有多個子類。
4、子類會繼承父類所有的屬性和方法,但是如果修飾符為private,雖然繼承過來了,但是不可見。
5、子類不會繼承父類的構造器。
6、子類的構造器一定會調用父類的構造器。並且默認調用父類的無參構造器。當父類沒有無參構造器時,需要在子類中,手動調用父類的構造器:super(實參列表);
為什麽調用父類的構造器??
重寫(override)
定義:在子類中重寫繼承自父類的方法,方法名和參數列表相同,方法實現不同
- 特點
- 方法名:完全相同
- 形參列表:完全相同
- 返回值類型
- void或者基本數據類型時:完全相同
- 引用數據類型時:返回父方法類型,或者父方法返回類型的子類。
- 修飾符
- 權限修飾符
- 重寫方法的修飾符 >= 被重寫方法的修飾符
- 註意:父類方法不能是private,子類中不可見
- 重寫方法的修飾符 >= 被重寫方法的修飾符
- 其他
- 權限修飾符
- 拋出的異常列表
多態
為了代碼更靈活
實現多態的前提是繼承。
多態:就是父類引用指向子類對象。(編譯看左,運行看右)
解惑?
1、Overload與Override的區別 Overload:重載 load的英文意思是載入,裝載 Override:重寫 Overload概念:表示在同一個類中,出現了方法名相同,形參列表不同的兩個或多個方法,稱為方法的重載。註意與返回值無關。 Override:當子類繼承父類時,會繼承父類中的所有方法,但是父類的某個方法的實現不適用於子類,那麽子類就重寫該方法。 重寫要求: 方法名:必須完全相同 形參列表:必須完全相同 返回值類型:1、如果是void、基本數據類型,則要求返回類型完全一樣 2、如果父類方法返回類型時引用類型,則子類方法返回類型<父類方法返回類型。 2、java為何設計單繼承?而不是多繼承呢?接口為什麽能多實現呢? ①從技術角度講,降低復雜性。 類A有一個m()方法,類B有一個m()方法,而類C繼承A,B;此時會發生問題,就是不確定繼承哪一個m()方法。至於接口為啥是多實現呢?難道接口中的變量(屬性都是 static final修飾的,即常量)可以區分?在編譯器,常量值不同時不能通過編譯。所以屬性肯定一樣的。至於方法,接口中的方法都是抽象方法,需要實現該接口的類去實現方法,最終調用的是子類的方法;而繼承則不一樣,父類的方法也是可以調用的,例如super.m(),你就不能確定調用A?還是B類中的方法了。
面向對象基本特征