面試的時候也常被問這問題
後來自己整理過後大概有自己的解釋方式
還好沒面試官聽到睡著
也有被稱讚過解釋的不錯
所以分享給各位參考看看
如果有錯也希望各位糾正一下
OOP的三大精神分別為封裝、繼承、多型
封裝的目的是要隱藏私有成員
讓外部使用者透過公開的介面去使用
這好處是可以規範限制外部使用者
避免任意存取發生意料之外的行為
繼承的目的是要讓子類別擴充父類別所有的公開或限定子類別可見的成員
多型的功能是可以讓你對一個物件使用不同的型別去操作
這好處是可以讓不同類別但是繼承或是實做相同介面(interface)用同一個型別去操作
你只需要注意物件是否有共通的型別而不須注意物件本身怎麼實作
繼承跟介面(interface)使用上的差別?
繼承在使用上子類別跟父類別一定有is a的關係(雖然說我看過的code這根本就是屁…)
但是介面不一定有is a的關係
相反的
某些行為或屬性是某些類別有但其他類別又沒有的話
那麼就適合把這些東西抽離出來
讓有需要的類別去實作
又能不破壞類別繼承的關係
※ 引述《goooeooo (ge)》之銘言:
: 以前面試遇到的問題
: 面試官問我什麼是OOP
: 當時我覺得我回答不好
: 我想請問以下 這樣解釋可以嗎?
: OOP觀念 運用得宜可以將開發時間縮至最短 且觀念正確下 也可讓將來維護人員好維護
: 在大型系統下效果尤其顯著
: 譬如今天開發倉庫系統(我隨意舉例實際沒有碰過這種系統)
: 由上往下分類 譬如有電子類、玩具類 此兩類都還有很多繼續向下的分類...
: 將電子類、玩具類 設計製作成大致物件
: 就是讓此兩類的向下分類幾乎都是以此兩物件做為變化繼續修正或增加差異的部份來開發
: 譬如:電子類 再向下有手機類、電腦類
: 那將手機類、電腦類會共通的方法、邏輯再加上變數 制作成電子類物件
: 用電子類物件來小幅修正 完成向下的手機類跟電腦類兩個小差異的部份就行了
: 照這樣的規則一直向下 就是說 也將手機類跟電腦類 繼續做成物件 供向下分類使用
: 也就是說你必須在規劃開始時就已經思考好整個系統架構 會由幾個最上層的物件開始向下
: 一直向下創造物件 讓程式碼進而達到最簡化 但又能完成繁瑣的任務
: 讓開發人員可以快速開發 將來維護人員也可快速理解維護
: 所以最上層的物件設置規劃非常重要 關係到整個系統開發的過程
: 這是我所理解的 請問這樣可以解釋OOP觀念嗎?