多继承

22 阅读1分钟
 trait A {
    println("A")
  }

  trait B {
    println("B")
  }

  // class 就有两个父类
  class Class1 extends A with B{
  println("Class1")
  }

  def main(args: Array[String]): Unit = {
  new Class1()
  }
}
import java.io.FileWriter
object class21 {
  trait FileLogger {
    val filename:String
    lazy val fileWriter = new FileWriter(filename,true)
    def writelog(msg:String): Unit ={
      fileWriter.write(msg)
      fileWriter.close()
    }
  }

  class MyFileLogger extends FileLogger {
    val filename="11-26.log"
  }

  def main(args: Array[String]): Unit = {
  val filelogger = new MyFileLogger()
  filelogger.writelog("今天下午上课")
  }
}
object class22 {
  object Person {
    def test(p: Person): Unit = {
      // private 在伴生对象中可以访问!
      println(p.password)
      // private[this] 在伴生对象中不能访问的
      // println(p.money)
    }
  }

  class Person() {
    var name: String = "xx" // 公开的
    protected var birthday: String = "2000-10-10"
    private var password: String = "123456"
    private[this] var money: Int = 100
    def t(): Unit = {
      println(money)
    }
  }

  class Son extends Person(){
    // 2. protected在子类中可访问
    println(birthday)
    // 3. private在子类中不能访问的
    // println(password)
  }

  def main(args: Array[String]): Unit = {
    val p1 = new Person()
    println(p1.name)
    // 2. protected在类的外部无法访问
    // println(p1.birthday)
    new Son()
    // 3. 在伴生对象中访问 类的私有成员
    Person.test(p1)
  }
}