1.特质:trait 实现多继承,注意观察父子类的构造器的执行顺序 1.先父后子 2.有多个父类,按书写顺序从左向右排序!
object class26 {
trait A {
println("A")
}
trait B {
println("B")
}
class Class1 extends A with B {
println("Class1")
}
def main(args: Array[String]): Unit = {
new Class1()
}
}
object class26 {
trait A {
println("A")
}
trait BB {
println("BB")
}
trait B extends BB{
println("B")
}
trait CC {
println("CC")
}
trait C extends CC {
println("C")
}
class Class1 extends C with A with B{
println("Class1")
}
def main(args: Array[String]): Unit = {
new Class1()
}
}
import java.io.FileWriter
import java.io.BufferedWriter
object class27 {
trait FileLogger {
val filename: String
// 使用 BufferedWriter 并确保资源能正确关闭
private def withWriter[T](op: BufferedWriter => T): T = {
val writer = new BufferedWriter(new FileWriter(filename, true))
try {
op(writer)
} finally {
writer.close()
}
}
def writeLog(msg: String): Unit = {
withWriter { writer =>
writer.write(msg + "\n") // 添加换行符,让每条日志单独一行
}
}
}
class MyFileLogger extends FileLogger {
override val filename = "11-26.log"
}
def main(args: Array[String]): Unit = {
val fileLogger = new MyFileLogger()
fileLogger.writeLog("今天上午上Scala课程")
fileLogger.writeLog("今天下午没课")
}
}