Sta*_*lin 8 language-agnostic oop language-design traits kotlin
在Kotlin中,我们有可能创建一个"可能需要在呼叫方面扩展课程的特性",例如
class Bar {}
trait T1 : Bar {}
class Foo : Bar, T1, T2, T3 {}
class Wrong : T1, T2 //error: Wrong should extend Bar
Run Code Online (Sandbox Code Playgroud)
我无法想象我可以应用这种结构的任何流程.谁能告诉我为什么需要它?
我认为这样做的主要原因是允许特征使用具体类中定义的方法和属性.想象一下,Bar有一些基本的方法,可以在...之上构建其他便利方法.通过让特性要求它在子类上使用Bar,你可以在调用该方法的特征中定义方法.然后,您可以通过为这些方法提供特征来将这些方法提供给许多子类.