【发布时间】:2019-01-11 18:47:18
【问题描述】:
文档告诉我们关于open注解的以下内容:
类上的 open 注解与 Java 的 final 相反:它 允许其他人从这个类继承。默认情况下,所有类 Kotlin 是final,对应Effective Java, 3rd Edition, 第 19 条:设计和记录继承或禁止继承。
我的课
class Foo //I can't inherit it
open class Bar //I can inherit it
默认保留所有类final的真正动机是什么?性能有什么提升吗?还是只是一种设计模式?为什么默认禁止open?
【问题讨论】:
-
您应该阅读 Effective Java 项目。它描述了为继承设计一个类需要多少工作。 极度痛苦的工作量。记录您对子类的所有要求,以及您要求他们不要做的所有事情。构建至少 3 个单独的子类,以验证您的基类实际上是有用的(哦,您不能自己编写这些类;必须由其他人编写,因为您会作弊)。等等等等等等。
-
大多数类应该是最终的。扩展它们可能是个坏主意。
标签: java performance inheritance design-patterns kotlin