如果我有特质A和B
trait A {
def funcA(a: Int): B
}
trait B {
var bvariable: Int
def funcB(b: Int): Int
}
是否可以拥有上述内容?如果是,我可以覆盖类中的函数,但是如何初始化bvariable
,因为我无法创建特征的实例,因此没有构造函数?
答案 0 :(得分:2)
当您声明特征时,实现它的类必须为特征的方法和其成员的值提供实现。例如,classB可以像这样实现特征B:
class classB extends B{
override var bvariable: Int = 0
override def funcB(b: Int): Int = {
0
}
}
如果您没有为bvariable scala编译器提供值,则会抱怨并非所有特征成员都已实现