【发布时间】:2018-03-04 17:50:09
【问题描述】:
如果我有特质 A 和 B
trait A {
def funcA(a: Int): B
}
trait B {
var bvariable: Int
def funcB(b: Int): Int
}
上面有可能吗?如果是,我可以覆盖类中的函数,但是我如何初始化bvariable,因为我无法创建特征的实例,因此没有构造函数?
【问题讨论】:
-
当你声明一个 trait 作为返回类型时,你返回的对象的类型实现了那个 trait,不多也不少,嗯?
-
是什么阻碍了您实例化扩展
B的类的实例?例如。匿名类val x = new B { bvariable = 42; def funcB(i: Int) = i * ; }的实例化按预期工作,您不需要构造函数。 -
是不是就像Java接口一样,当有一个返回类型为接口的函数时,它返回一个实现该接口的类的对象?
-
@KseniaM 这有点像带有默认方法实现和变量的 Java 接口,但特性 compose quite differently。仍然不完全清楚您的实际问题是什么。