import java.io.PrintWriter
//演示一个经典错误:空指针异常
trait FileLogger {
//抽象属性,没有=
val filename:String
println("父类", filename)
//lazy 不立刻求值,而是等到这个变量被使用的时候,去求值
//lazy val fileout = new PrintWriter(filename)
lazy val fileout = new PrintWriter(filename)
//用来把 msg 写入到相应的文件中
def log(msg: String): Unit = {
fileout.println(msg)
fileout.flush()
}
}
class p4 extends FileLogger {
val filename = "2024-10-28.txt"
println("子类",filename)
}
object p5 {
def main(args: Array[String]): Unit = {
//val t1 = new p4
val t1 = new{ val filename="2024-10-29.txt"} with FileLogger //匿名类,提前定义
t1.log("test!"*10)
}
}