trait 调用链
scala> trait Logger { def log(log:String) {}}
defined trait Logger
scala> trait aLogger extends Logger { override def log(log:String){println("---a---"+log); super.log(log)}}
defined trait aLogger
scala> trait bLogger extends Logger { override def log(log:String){println("---b---"+log); super.log(log)}}
defined trait bLogger
scala> trait cLogger extends Logger { override def log(log:String){println("---c---"+log); super.log(log)}}
defined trait cLogger
scala> class Person {
| def
|
| }
<console>:4: error: identifier expected but '}' found.
}
^
scala> class Person extends aLogger with bLogger with cLogger {
| def sayHello(name:String){
| println(" hello "+name)
| log(name)
| }
| }
defined class Person
scala>
scala> var p = new Person
p: Person = Person@31c7c281
scala> p.sayHello("tomcat")
hello tomcat
---c---tomcat
---b---tomcat
---a---tomcat
本文通过一个具体的Scala代码示例介绍了如何使用特质来构建调用链,并展示了当多个特质扩展同一个基特质时,调用顺序的具体行为。示例中定义了多个特质并组合它们创建了一个类,演示了日志记录功能的叠加。
921

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



