知识卡片
类默认final的继承设计取舍
内容
Kotlin中所有类、成员属性和成员方法默认都是隐式final的,必须显式加open关键字才允许被继承或被子类重写,这与Java”默认可继承、要显式加final才禁止”的设计正好相反。这个取舍背后的意图是把”该不该被继承”从一个容易被忽略的默认状态,变成设计者必须主动声明的决定——一个类如果没有为继承场景设计过(比如没考虑子类覆盖某方法后是否会破坏内部状态一致性),默认就不能被继承,避免继承被无意间滥用而破坏封装。
参考来源
《Kotlin开发快速入门与实战》第5章《Kotlin面向对象》