trait 构造机制
通过下面例子 看构造 执行顺序
scala> class Person { println("--person--")}
defined class Person
scala> trait Logger { println("--Logger--")}
defined trait Logger
scala> trait ALogger extends Logger { println("--ALogger--")}
defined trait ALogger
scala> trait BLogger extends Logger { println("--BLogger--")}
defined trait BLogger
scala> class Student extends Person with ALogger with BLogger{
| println(" --student--")
| }
defined class Student
scala> var s = new Student
--person--
--Logger--
--ALogger--
--BLogger--
--student--
s: Student = Student@411e5672
注意 with 后面的 trait 的顺序
scala> class Student2 extends Person with BLogger with ALogger {
| println(" --student--") }
defined class Student2
scala> var s2 = new Student2
--person--
--Logger--
--BLogger--
--ALogger--
--student--
s2: Student2 = Student2@ec50502
本文通过实例演示了Scala中特质(trait)构造机制及其执行顺序。重点介绍了当多个特质继承自同一父特质时,构造顺序如何受with关键字后面特质排列的影响。
915

被折叠的 条评论
为什么被折叠?



