java面向對象
一、java面向對象的三大特徵
1、封裝(Encapsulation)
封轉是指屬性私有化
- 根據需要提供setter和getter方法來訪問屬性
- 隱藏具體屬性和實現細節,僅對外開放接口
- 控制程序中屬性的訪問級別
目的:增強數據安全性,不能讓其他用戶隨意訪問和修改數據,簡化編程,使用者不必在意具體實現細節,而只是通過外部接口即可訪問類的成員
2、繼承(Extend)
繼承是指將多個相同的屬性和方法提取出來,新建一個父類
- java中一個類只能繼承一個父類,且只能繼承訪問權限非private屬性和方法
- 子類可以重寫父類中的方法,命名與父類中同名的屬性
目的:代碼複用
3、多態
多態(Polymiorph)可以分爲兩種:設計時多態、運行時多態
設計(編譯)時多態:即重載(Overload),是指java允許方法名相同而參數不同(返回值可以相同也可以不同),同一個類中允許存在一個或多個以上的同名函數,只要參數類型或參數個數不同即可
運行時多態:即重寫(Override)必須是在繼承體系中,子類重寫父類方法,JVM運行時根據調用該方法的類型決定調用那個方法
目的:增加代碼的靈活度
總結:
1、java中應儘量減少繼承關係,以降低耦合度
2、使用多態時,父類在調用方法時,優先調用子類的方法,如果子類沒有重寫父類的方法,則再調用父類的方法
3、java訪問控制符作用範圍表:
本類 | 本包 | 子類 | 外部包 | |
---|---|---|---|---|
public | ✓ | ✓ | ✓ | ✓ |
protected | ✓ | ✓ | ✓ | X |
default | ✓ | ✓ | X | X |
private | ✓ | X | X | X |
✓:可以訪問 X:不可訪問
二、java面向對象的五大原則
單一職責原則:一個類,最好只做一件事,只有一個引起它變化。每個類應該實現單一的職責,如果不是,那就把類拆分
開放封閉原則:對擴展開放,對修改封閉
里氏替換原則:子類必須能夠替換其基類,里氏替換原則中說,任何基類可以出現的地方,子類一定可以出現
依賴倒置原則:依賴於抽象接口,不要依賴於具體實現,簡單來說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶於與實現模塊間的耦合
接口隔離原則:使用多個小的專門接口,而不是使用一個大的接口