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

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

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

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

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

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

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


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

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

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

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

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

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

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

相關文章
相關標籤/搜索