父类子类

48 阅读1分钟
package leve02

object Class017 {
  trait A {
    println("A")
  }
  trait BB {
    println("BB")
  }
  trait B extends BB{
    println("B")
  }
  trait CC {
    println("CC")
  }
  trait C {
    println("C")
  }
  class Class1 extends C with A with B {
    println("Class1")
  }

  def main(args: Array[String]): Unit = {
   new Class1()
  }
}

特质:trait 实现多继承,注意观察父子类的构造器的执行顺序

  1. 先父后子
  2. 有多个父类,按书写顺序从左向右执行

image.png

package leve02

import java.io.FileWriter

object Class018 {
  trait FileLogger {
    println(2)
    val filename: String
    lazy val fileWriter = new FileWriter(filename, true)

    def writeLog(msg: String): Unit = {
      fileWriter.write(msg)
      fileWriter.close()
    }
  }

  class MyFileLogger extends FileLogger {
  println(1)
    val filename = "11-26.log"
  }

  def main(args: Array[String]): Unit = {
    val fileLogger = new MyFileLogger()
    fileLogger.writeLog("今天上午Scala课程")
  }
}