Почему, если у меня есть:
trait T {
def method(a: Int)
}
class A extends T {
//...
}
class B extends A {
//...
}
тогда, когда я делаю это:
//...
val b = new B
b.method(15)
//...
говорят, что method()
не определено для B? Почему я должен прямо сказать, что
class B extends A with T
чтобы получить то, что я хочу? Не наследуются ли черты родительских классов? Как это может быть так, если они могут реализовать большую часть собственных методов родителя, которые наследуются по определению? Если это так, то каков аргумент?