不是所有的牛奶都叫特仑苏,也不是所有的类都有基类。
类一定有基类?
- C++默认情况下不限定类一定有一个原始基类,C++这种处于C和纯面向对象的设计使得它格外有选择权。
- 对于 Smalltalk/ObjC/Java/C#/Eiffel/Python/Kotlin/仓颉 默认一定有原始基类,即使语言允许不指定基类,编译器也会默认加上。
- 例如Python中,定义一个空类,用内置函数dir查看它有哪些属性和方法。
- C# 值类型也间接继承Object, 允许 100.ToString() 这种写法。
基类的代号
- Java/Kotlin/仓颉: super.
- C++和Eiffel 必须用父类名因为支持多继承,super无法明确属于哪个基类。
- PHP 用parent指代基类。
- Python 用 super() 指代父类对象。
- C#: base.
修改根类
- ObjC允许修改根类,即自定义一套新的NSObject类。
