【发布时间】:2018-07-05 09:28:50
【问题描述】:
默认情况下为虚拟的函数是否违反关闭修改? 函数默认为 final 是否违反 open for extension?
如果实现了多重继承,函数是否应该默认为 final?
上课怎么样? 它们应该是默认的虚拟还是默认的最终?
或者 final 和 virtual 都应该是显式的? (即强制编码器将每个函数或类声明为最终或虚拟,就像在大多数语言中没有默认返回类型一样。)因为显式优于隐式。
final表示一个函数或一个类不能被继承或覆盖,virtual表示一个函数或一个类可以被继承或覆盖。
【问题讨论】:
-
“打开”和“关闭”在这种情况下没有任何意义。
-
@EJP 来自 kotlin...
-
open来自 Kotlin,它不会出现在您的标签中。close还不是来自任何地方。 -
@EJP 是的,我意识到并编辑了问题。
-
@shawnhcorey 很有趣。我认为继承应该是松耦合的,所以我猜这回答了我的问题。如果它们是松耦合的,那么 final 应该是默认的,如果它们是紧密耦合的,那么 virtual 应该是默认的?
标签: oop language-design