/*
特质
trait: 实现多继承
trait多维继承构造器的执行顺序
1.先父 后子
2.如果是多继承,有多个trait,按书写顺序从左到右
*/
trait AA {
println("AA 特质构造器")
}
trait A {
println("A 特质构造器")
}
trait B {
println("B 特质构造器")
}
trait CC {
println("CC 特质构造器")
}
trait C {
println("C 特质构造器")
}
class Child() extends C with B with A{
println("child ...")
} // 继承 三个特质A,B,C
def main(args: Array[String]):Unit = {
val child = new Child()
输出结果
懒加频效果 输出错误从下往上看
import java.io.FileWriter
/*
*/
trait FileLogger {
println("fileLogger")
val filename:String
// 懒加频效果
// 这个对象不会立刻去创建,而是等你需要使用的时候才去创建
lazy val write = new FileWriter(filename)
def writeLog(msg:String) = {
write.write(msg)
write.close()
}
}
class MyWriter extends FileLogger {
println("MyWrite")
override val filename: String = "test.log"
} // 继承 三个特质A,B,C
def main(args: Array[String]): Unit = {
val log = new MyWriter()
log.writeLog("测试内容")
}
输出结果