我对 Scala trait和Java Interface 的常见功能有什么困惑?此外, Scala trait和Java Class 中的常见功能是什么,但 Java接口中没有?
答案 0 :(得分:0)
“Scala trait和Java Interface的常见功能是什么?”
Java接口和Scala特征都可以定义零个或多个可供多个类使用的抽象成员(字段,方法)。重要的是,在Java中,类可以“实现”许多接口,而在Scala中,类可以混合许多特性。这些类的实例也算作类型系统中接口/特征的实例。因此,接口/特性提供了多重继承的一些好处(在每种情况下都有限制和限制),只有内置的完全单一继承才能重新创建。
“Scala trait和Java Class中的常见功能在Java接口中有什么但不存在?”
traits和Java类都可以定义成员的实现,而接口只能声明成员但不能给它们实现实体。例如Scala特征:
object Energy
class Food
trait Eats {
def eat(f: Food) = Energy
}
可以混合到Cat和Dog中,将逻辑抽象为特征,而在Java接口中可以定义方法,但每个类都必须复制实现逻辑。
答案 1 :(得分:0)
启动Java 8,您可以在接口(以及静态方法)上定义“默认方法”,以便java接口和scala特性变得等效。