C++、java、C#、Python、Php等語言均支援OOP,但是有很多規則,他們卻不盡相同,本文重點總結一下幾種語言在OOP中的共性與特性,隻要把這些點區分開,其實幾種語言的代碼你就都可以運用自如。
詳見下表:
C++
Java
C#
Python
PHP
Lua
強類型(靜态類型)
弱類型(動态類型)
弱類型(動态類型)
1.支援多繼承
2.持private、protected、public三種繼承方式
1.不支援多繼承
2.隻有一種繼承方式(關鍵字extends)
2.隻有一種繼承方式(無關鍵字,class B : A)
2.隻有一種繼承方式(無關鍵字:class C(B,A))
2.隻支援一種繼承方式(關鍵字extends)
不支援繼承,但可用metatable實作
1.無接口概念
1.有接口概念
2.支援接口多繼承
1.無接口概念
支援函數重載
1.不支援函數重載
2.可通過預設參數實作重載
支援子類覆寫父類方法
支援子類覆寫父類方法
不可封裝屬性
可以封裝屬性
不可封裝屬性
隐藏成員變量使用:private/protected
變量名稱前加雙下劃線
變量用local修飾
this->通路成員
this.通路成員
self.通路成員
$this->通路成員
self.通路成員
構造函數為類名
__init__
__construct
無此概念
析構函數為~類名
無需自己析構
__del__
__destruct