【问题标题】:Understanding traits in Kotlin了解 Kotlin 中的特征
【发布时间】:2012-01-17 10:54:43
【问题描述】:

Kotlin 中,我们将有可能创建一个“可能需要在调用端扩展类的特征”,例如

 class Bar {}
 trait T1 : Bar {}
 class Foo : Bar, T1, T2, T3 {}
 class Wrong : T1, T2 //error: Wrong should extend Bar

我无法想象可以应用这种结构的任何流程。谁能告诉我为什么我们需要它?

【问题讨论】:

  • 我建议我们关闭这个问题,特征不再存在,一旦重命名为接口以匹配 Java 8 语义,它们的语义已经发生了显着变化。这可以被认为是无关紧要的,现在对现代 Kotlin 具有误导性。

标签: oop language-agnostic language-design traits kotlin


【解决方案1】:

我认为这样做的主要原因是允许 trait 使用具体类中定义的方法和属性。想象一下Bar 有一些基本方法,可以在此基础上构建其他便利方法……通过让特征要求它用于Bar 的子类,您可以在特征中定义调用该方法的方法。然后,您可以通过为许多子类提供 trait 来将这些方法提供给它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2018-12-23
    • 2015-02-25
    • 2018-05-02
    • 2019-07-21
    • 2018-03-20
    • 2017-10-21
    相关资源
    最近更新 更多