面向對象程序設計中的常用術語總結

   在面向對象編程中,經常會遇到許多的術語,下面就以C++(雖然不是純種面向對象,但大多數術語基本差不多)爲例總結一下。

   先簡單說一下面向對象程序設計(Object Oriented Programming,OOP)吧。

  • OOP是一種計算機編程架構。

  • OOP的一條基本原則:計算機程序是由單個能夠起到子程序作用的單元或對象組合而成。

  • OOP達到了軟件工程的三個目標:重用性、靈活性、擴展性。

  • OOP的三個特點:封裝性(Encapsulation)、繼承性(Inheritance)、多態性(Polymorphism)。


   下面就入正題,說一下OOP中主要的術語:

  • 封裝性(Encapsulation)——簡單說就是隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀取和修改的訪問級別。其實,我認爲在OOP中,封裝性主要是用類來實現的。類便體現了封裝性。

  • 繼承性(Inheritance)——即一個類可以從另外一個類繼承,從而得到這個類的一些屬性。繼承的類稱爲子類,被繼承的稱爲父類。有的語言(如C++)支持多重繼承,即一個子類可以同時有多個父類。而有的編程語言中,一個子類只能繼承自一個父類,比如Java,但是Java用接口技術實現了與多重繼承相似的效果。

  • 多態性(Polymorphism)——多態性是一個相對於前兩個複雜一點的概念。多態性的定義是:同一操作作用於不同類的實例,將產生不同的執行結果,即不同類的對象收到相同的消息時,得到不同的結果。多態性也包括編譯時的多態性(靜態多態性)和運行時的多態性(動態多態性)。靜態多態性是指定義在一個類或一個函數中的同名函數,他們根據參數表(類型以及個數)區別語義,並通過靜態聯編實現,例如,在一個類中定義的不同參數的構造函數。動態多態性是在定義在一個類層次的不同類中的重載函數,他們一般具有相同的函數,因此要根據指針指向的對象所在類來區別語義,它通過動態聯編實現。多態性就是多種表現形式,具體來說,可以用“一個對外接口,多個內在實現方法”表示。

  • 函數重載(Overload)——剛纔在多態性裏面舉得不同構造函數就屬於一個重載的例子。重載的條件是:函數的參數類型參數個數不同,才能構成函數的重載。要注意:只有函數的返回值類型不同是不能構成函數的重載的。

  • 函數覆蓋(Override)——覆蓋和隱藏是兩個非常難區分的概念。構成函數覆蓋的條件爲:基類函數必須是虛函數(使用Virtual關鍵字進行聲明);發生覆蓋的兩個函數要分別位於派生類和基類中;函數名稱和參數列表必須完全相同。在函數覆蓋的情況下,編譯器會在運行時根據對象的實例類型來確定要調用的函數。

  • 函數隱藏——所謂隱藏,是指派生類中具有和基類同名的函數(不考慮參數列表是否相同),從而在派生類中隱藏了基類的同名函數。區別覆蓋和隱藏只要記住一點就可以了:函數的覆蓋是發生在派生類和基類之間,兩個函數必須完全相同,並且都是虛函數。除此以外的,就是隱藏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章