我對面向對象的理解


談談你對面向對象的理解

  • 面向對象編程,即OOP,是一種編程范式,滿足面向對象編程的語言,一般會提供類、封裝、繼承等語法和概念來輔助我們進行面向對象編程。

  • 面向對象是基於萬物皆對象這個哲學觀點. 所謂的面向對象就是將我們的程序模塊化,對象化,把具體事物的特性屬性和通過這些屬性來實現一些動作的具體方法放到一個類里面

  • 面向對象的三大特征 繼承,封裝,多態

    一 繼承

    • 繼承概念:一個類繼承另一個類,則稱繼承的類為子類,被繼承的類為父類。
    • 目的:實現代碼的復用。
    • 理解:子類與父類的關系並不是日常生活中的父子關系,子類與父類而是一種特殊化與一般化的關系,是is-a的關系,子類是父類更加詳細的分類。如 class dog 繼承於 animal,就可以理解為dog is a animal.注意設計繼承的時候.
    • 結果:繼承后子類自動擁有了父類的屬性和方法,子類可以寫自己特有的屬性和方法,目的是實現功能的擴展,子類也可以復寫父類的方法即方法的重寫。

    二 封裝

    • 概念:封裝也稱為信息隱藏,是指利用抽象數據類型將數據和基於數據的操作封裝在一起,使其構成一個不可分割的獨立實體,數據被保護在抽象數據類型的內部,盡可能地隱藏內部的細節,只
保留一些對外接口使之與外部發生聯系。系統的其他部分只有通過包裹在數據外面的被授權的操作來與這個抽象數據類型交流與交互。也就是說,用戶無需知道對象內部方法的實現細節,但可以根據對象提供的外部接口(對象名和參數)訪問該對象。

    • 好處:(1)實現了專業的分工。將能實現某一特定功能的代碼封裝成一個獨立的實體后,各程序員可以在需要的時候調用,從而實現了專業的分工。(2)隱藏信 息,實現細節。通過控制訪問權限可以將可以將不想讓客戶端程序員看到的信息隱藏起來,如某客戶的銀行的密碼需要保密,只能對該客戶開發權限。

    三、多態

    • 概念:相同的事物,調用其相同的方法,參數也相同時,但表現的行為卻不同。
    • 理解:子類以父類的身份出現,但做事情時還是以自己的方法實現。子類以父類的身份出現需要向上轉型(upcast),其中向上轉型是由JVM自動實現的, 是安全的,但向下轉型(downcast)是不安全的,需要強制轉換。子類以父類的身份出現時自己特有的屬性和方法將不能使用。
  • “面向過程”和“面向對象”的區別

    • 面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
    • 可以拿生活中的實例來理解面向過程與面向對象,例如五子棋,面向過程的設計思路就是首先分析問題的步驟:
      • 1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟 2,9、輸出最后結果。把上面每個步驟用不同的方法來實現。
      • 如果是面向對象的設計思想來解決問題。面向對象的設計則是從另外的思路來 解決問題。整個五子棋可以分為1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對 象(玩家對象)負責接受用戶輸入,並告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用 第三類對象(規則系統)來對棋局進行判定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM