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