函数 / 编程语言 / 虚函数 / 重写 · 2023年 10月 10日 0

成员函数重写

65 次浏览

多态让世界更精彩。

  • ObjC 子类实现父类一样的成员方法就是重写,不需要额外修饰符。
  • Java使用注解重写父类函数@Override.
  • C#/Kotlin 提供override关键字表示重写基类函数, Kotlin 额外要求父类对应函数用 open 修饰(可以被重写)。对于Kotlin,如果是抽象类或者interface,抽象方法不需要用open修饰,继承它的类依然需要用override修饰重写的函数。
  • Python和JS不需要加额外注解或修饰符,只要重新定义父类同名方法即可。
  • C++11引入了override关键字(当然C#早就有),指示此函数覆盖基类成员函数的代码,好处是请编译器检查它真的覆盖了基类代码,而不是写错了。
  • C++11引入了final说明符,代表类或者成员函数不可被重写。
  • 仓颉 成员函数必须用open修饰才可以被子类重写,子类不可以重写父类的构造函数或private函数,可以重写protected或public成员函数。子类重写函数可以不加override修饰符。
    • 对父类静态成员函数的重写,被称为"重定义",为了更清晰可以加上 redef 修饰符。