The documentation tells us the following about open
annotation:
The open annotation on a class is the opposite of Java's final: it allows others to inherit from this class. By default, all classes in Kotlin are final, which corresponds to Effective Java, 3rd Edition, Item 19: Design and document for inheritance or else prohibit it.
My classes
class Foo //I can't inherit it
open class Bar //I can inherit it
What is the real motivation to keep all classes final
by default? Is there any gain in performance? Or just it is a design pattern? Why prohibit open
by default?