小编45g*_*45g的帖子

构成独立的特征

鉴于两个独立的特征:

trait T1 {
    def x = 42
}

trait T2 {
    def x = 0
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试定义一个混合在这两个特征中的类,如:

class C extends T1 with T2
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

error: overriding method x in trait T1 of type => Int;
method x in trait T2 of type => Int needs `override' modifier
class C extends T1 with T2
      ^
one error found
Run Code Online (Sandbox Code Playgroud)

现在假设T1和T2是独立开发的,因此没有覆盖,因为它们不会覆盖任何东西.那么如何定义C?像这样:

class C extends T1 with T2 {
    override def x = super.x
}
Run Code Online (Sandbox Code Playgroud)

scala traits

8
推荐指数
1
解决办法
314
查看次数

标签 统计

scala ×1

traits ×1