面嚮對象語言總結

 C++、java、C#、Python、Php等語言均支持OOP,但是有很多規則,他們卻不盡相同,本文重點總結一下幾種語言在OOP中的共性與特性,只要把這些點區分開,其實幾種語言的代碼你就都可以運用自如。

詳見下表:

C++

Java

C#

Python

PHP

 Lua

強類型(靜態類型)

強類型(靜態類型)

強類型(靜態類型)

弱類型(動態類型)

弱類型(動態類型)

 弱類型(動態類型)

1.支持多繼承
2.
privateprotectedpublic三種繼承方式

1.不支持多繼承
2.
只有一種繼承方式(關鍵字extends

1.不支持多繼承
2.
只有一種繼承方式(無關鍵字,class B : A)

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

 無此概念




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