Trait多继承顺序:
准则:
- 如果有超类,则先调用超类的函数。
- 如果混入的trait有父trait,它会按照继承层次先调用父trait的构造函数。
- 如果有多个父trait,则按顺序从左到右执行。
- 所有父类构造函数和父trait被构造完之后,才会构造本类的构造函数。
object TraitOrder extends App {
trait Logger {
println("Logger")
}
trait FileLogger extends Logger {
println("FileLogger")
}
trait Closable {
println("Closable")
}
class Person{
println("Constructing Person...")
}
class Student extends Person with FileLogger with Closable {
println("Constructing Student ...")
}
new Student
}
运行结果:
