С учетом следующего кода:
class A {
class B
type C <: B
trait D
}
class E extends A {
type C = B
}
class F extends E {
override type C = B with D
}
Почему компилятор презентаций Scala IDE в Eclipse Indigo IDE жалуется на сообщение об ошибке переопределении типа C в классе E, что равно F.this.B;тип C имеет несовместимый тип ?
В конце концов, класс "B" только "исправлен" с чертой "D", и, следовательно, два определения типа имеют один и тот же базовый тип, который является "B".Следовательно, совместимы определения типов.
Код ниже работает .Я считаю, что правила присвоения типов похожи на присвоение переменных, например:
class Foo
trait Bar
val a: Foo = new Foo
val fooWithBar: Foo = new Foo with Bar
Неужели мое понимание неверно?