C++、java、C#、Python、Php等語言均支持OOP,但是有很多規則,他們卻不盡相同,本文重點總結一下幾種語言在OOP中的共性與特性,只要把這些點區分開,其實幾種語言的代碼你就都可以運用自如。
詳見下表:
C++ | Java | C# | Python | PHP | Lua |
強類型(靜態類型) | 強類型(靜態類型) | 強類型(靜態類型) | 弱類型(動態類型) | 弱類型(動態類型) | 弱類型(動態類型) |
1.支持多繼承 | 1.不支持多繼承 | 1.不支持多繼承 | 1.支持多繼承 2.只有一種繼承方式(無關鍵字:class C(B,A)) | 1.支持多繼承 2.只支持一種繼承方式(關鍵字extends) | 不支持繼承,但可用metatable實現 |
1.無接口概念 | 1.有接口概念 2.支持接口多繼承 | 1.有接口概念 2.支持接口多繼承 | 1.無接口概念 | 1.有接口概念 2.支持接口多繼承 | 1.無接口概念 |
支持函數重載 | 支持函數重載 | 支持函數重載 | 1.不支持函數重載 2.可通過默認參數實現重載 | 1.不支持函數重載 2.可通過默認參數實現重載 | 1.不支持函數重載 2.可通過默認參數實現重載 |
支持子類覆蓋父類方法 | 支持子類覆蓋父類方法 | 支持子類覆蓋父類方法 | 支持子類覆蓋父類方法 | 支持子類覆蓋父類方法 | 支持子類覆蓋父類方法 |
| 不可封裝屬性 | 不可封裝屬性 | 可以封裝屬性 | 可以封裝屬性 | 不可封裝屬性 | 不可封裝屬性 |
| 隱藏成員變量使用:private/protected | 隱藏成員變量使用:private/protected | 隱藏成員變量使用:private/protected | 變量名稱前加雙下劃線 | 隱藏成員變量使用:private/protected | 變量用local修飾 |
| this->訪問成員 | this.訪問成員 | this.訪問成員 | self.訪問成員 | $this->訪問成員 | self.訪問成員 |
| 構造函數為類名 | 構造函數為類名 | 構造函數為類名 | __init__ | __construct | 無此概念 |
| 析構函數為~類名 | 無需自己析構 | 無需自己析構 | __del__ | __destruct | 無此概念 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。