從接觸編程開始就一直聽到面向對象的概念,之前的記憶僅僅是停留在字面意思,未能深入理解其精髓。最近翻過頭來重新理一下面向對象的概念,將自己的知識點做一個梳理。
1、面向對象編程(Object Oriented Programming,OOP)
區別於傳統的面向過程編程,它將數據及對數據的操作行爲放在一起,作爲一個相互依存、不可分割的整體——對象。對於相同類型的對象進行分類、抽象後,得出共同的特徵而形成了類。面向對象編程就是定義這些類。類定義好之後將作爲數據類型用於創建類的對象。程序的執行表現爲一組對象之間的交互通信。對象之間通過公共接口進行通信,從而完成系統功能。
2、面向對象的三個特徵
封裝、繼承、多態。
封裝
將一組具有相同特徵和行爲的實體抽象成獨立的對象,隱藏對象的屬性和實現細節,對外提供不同訪問級別的接口。
繼承
通過擴充已有對象的方法來創建新的對象。
多態
子類可以通過覆蓋父類的同名方法來產生不同的行爲。
3、面向對象的六大原則
單一職責原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則、開閉原則。
單一職責原則(Single-Responsibility Principle,SRP)
應該有且僅有一個原因引起類的變更。
里氏替換原則(Liskov-Substitution Principle,LSP)
所有引用基類的地方必須能透明的使用其子類的對象。
依賴倒置原則(Dependence-Inversion Priciple,DIP)
高層模塊不應該以來底層模塊,兩者都應該以來其抽象;抽象不應該依賴細節;細節應該依賴抽象。即:面向接口編程
接口隔離原則(Interface Segregation Principle)
接口儘量細化,同時接口中的方法儘量少。
迪米特法則(Lawof Demeter)
也成最少知識原則(Least Knowledge Principle,LKP),一個對象應該對其他對象有最少的瞭解。
開閉原則(Open Closed Principle)
對擴展開放、對修改關閉。