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?
 
     
     
     
     
     
    