【问题标题】:Common Feature between Scala Trait ,Java Interface and Java ClassScala Trait,Java接口和Java类之间的共同特征
【发布时间】:2015-07-12 09:43:40
【问题描述】:

我对 Scala trait 和 Java 接口 有什么共同特征有点困惑? Scala trait 和 Java 类 中存在但 Java 接口 中不存在的共同特征是什么?

【问题讨论】:

    标签: java scala interface traits


    【解决方案1】:

    “Scala trait 和 Java Interface 有什么共同特点?”

    Java 接口和 Scala 特征都可以定义零个或多个可供多个类使用的抽象成员(字段、方法)。重要的是,在 Java 中,一个类可以“实现”许多接口,而在 Scala 中,一个类可以混合许多特征。这些类的实例也算作类型系统中接口/特征的实例。因此,接口/特征提供了多重继承的一些好处(在每种情况下都有限制和限制),您无法仅使用内置的完整单继承来重新创建这些好处。

    “Scala trait 和 Java Class 中存在哪些共同特征在 Java Interface 中存在但不存在?”

    trait 和 Java 类都可以定义成员的实现,而接口只能声明成员但不能给他们实现主体。例如 Scala 特征:

    object Energy
    class Food
    trait Eats {
       def eat(f: Food) = Energy
    }
    

    可以混合到 Cat 和 Dog 中,将逻辑抽象为 trait,而在 Java 接口中可以定义方法,但每个类都必须复制实现逻辑。

    【讨论】:

      【解决方案2】:

      从 Java 8 开始,您可以在接口(以及静态方法)上定义“默认方法”,从而使 java 接口和 scala trait 变得等价。

      【讨论】:

        猜你喜欢
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 2011-04-26
        • 2021-03-24
        • 2014-07-24
        • 2021-01-19
        • 1970-01-01
        相关资源
        最近更新 更多