【发布时间】:2018-08-19 00:33:55
【问题描述】:
基本上这就是我想要做的。 具有成员的特征和继承该成员并对其进行初始化的另一个特征。 然后是一个类,它采用必须从第一个特征继承的泛型类型并访问该成员
object main extends App{
val z = new c[b]()
z.p()
}
trait a{
val x : String
}
trait b extends a {
val x = 1
}
class c [A <: a] {
self: A =>
def p(): Unit ={
print(x)
}
}
但在行中
val z = new c[b]()
c[b] 带有下划线,编译器抱怨
“非法继承,自类型c[b]不符合A”
我想定义多个继承自父亲特征的特征,然后定义一个类,该类采用父亲的子特征之一并访问其值
【问题讨论】:
-
在这种情况下,坚持命名约定会很有帮助:a) 类,特征以大写开头。 b) 类型参数:单个大写字母 c) 其他类不是单个字母。
标签: scala oop generics inheritance