私はこのコードを持っています:
trait base{
def msg: Unit= {
println{"base"}
}
}
trait foo extends base {
abstract override def msg: Unit ={
super.msg
println("foo")
}
}
class base2{
def msg:Unit = {
println{"base 2"}
}
}
class test extends base2 with foo{
override def msg: Unit ={
super.msg
println("done")
}
}
を呼び出すと(new test).msg
、次のようなものが出力されます。base, foo, done
ただし、基本特性を次のように変更すると:
trait base{
def msg: Unit
}
次のようなものが出力されます。base 2, foo, done
の順序with
は右から左 (最後のものが最初) であることは理解していますが、どうextends
ですか? 時々それが印刷さbase2
れるのはbase
なぜですか?