一、面向對象java
面向對象三大特徵:封裝、繼承、多態。編程
面向對象設計模式六大原則:設計模式
(1)單一職責原則:設計類時、將單一類設計成具備一種或一類功能、使其具備原子性。(我的理解:設計類時、尤爲是功能複雜時應該拆分爲各個功能類不要寫複雜的類、這樣有助於代碼維護與重構)架構
(2)里氏替換原則:子類能夠擴展父類功能、但不能改變父類原有功能(我的理解:若是咱們想擴展一個類的功能時、最好是繼承這個類進行擴展(ps:若是這個類不是在已有系統中運用時、能夠考慮修改原來的類)使其子類成爲有新功能的類進行使用、這麼作的好處是能夠將不改變原來的結構進行拓展、也有些符合開閉原則)框架
(3)依賴倒置原則: 高層模塊不該該依賴低層模塊,兩者都應該依賴其抽象;抽象不該該依賴細節;細節應該依賴抽象 (我的理解:該原則是典型的面向接口編程思想、當咱們設計軟件架構時應該優先定義好抽象類或接口等架構起來、這樣在開發時遵循咱們的接口結構進行編程開發、在開發時的遇到的細節變動等都有接口做爲約束、若是反過來設計的話將使項目不可控、結構不清晰、目標不明確)函數
(4)接口隔離原則: 客戶端不該該依賴它不須要的接口;一個類對另外一個類的依賴應該創建在最小的接口上 。(我的理解:好比咱們項目中運用的controller、service、dao這三層controller層不可直接調用dao這樣是一種業務邏輯上的約束、也是編碼應該有的約束。好處就是能夠使開發人員不須要去看那些其餘接口、減小沒有必要的接口暴露。這種設計須要本身琢磨設計的接口過大或太小都會有意想不到的問題)編碼
(5)迪米特法則: 一個對象應該對其餘對象保持最少的瞭解 。設計
(我的理解:下降耦合、這是設計模式的核心 高內聚低耦合也是各個經典框架符合的基本原則)面向對象設計模式
(6)開閉原則: 一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉 。對象
(我的理解:這種原則適用於代碼重構不改變其已有功能、而是進行擴展。固然其複雜程度須要全方位考慮)
我的觀點:對於設計模式這六條原則、是軟件發展這麼多年總結出來的優秀原則、對於初期開發人員並無什麼做用、這些原則不是說遵循哪一條就必定是對的、也不必定是知足全部的原則設計就是最好的、軟件開發最好的就是結合業務邏輯使用維護方便、沒有最好只有更好。只能說這幾種原則就像是武學中的心法、看似不能打架、實則能悟出不少道理。
二、繼承
java中繼承只能是單繼承、extends爲關鍵字
子類並不能繼承父類全部內容:
(1)父類中的private修飾的成員變量和方法、
(2)父類的包訪問權限只有在子類和父類同一包下才能擁有、
(3)子類若是成員變量與父類成員變量名相同時則會隱藏父類成員變量、若要使用父類須要用super調用、
成員方法也同樣、
(4)不會繼承構造器 調用需用super
三、封裝
封裝能夠理解爲歸類、將同一類事務具備共性的屬性歸到一個類中、再將類中的成員變量方法進行權限設置、也能夠經過get/set方法來訪問操做變量、這種行爲就是封裝。
四、多態
Cat c = new Cat();
Animal a = new Cat();
理解這兩個含義就能理解多態、由於java爲單繼承、若是cat對象重寫了animal的方法、那麼a就能夠使用cat中的方法、從而實現動態連接。