trait2(多继承)

33 阅读1分钟

格式:类名 extends 特质1 with 特质2 with 特质3 其中多个特质的顺序可以交换。

多继承时,构造器调用顺序

1.先父后子。先调用父类构造器,再调用子类构造器

2.有多个父类,从左到右的顺序去调用构造器

package level02

/*
多继承时,构造器调用顺序
1.先父后子。先调用父类构造器,再调用子类构造器
2.有多个父类,从左到右的顺序去调用构造器
 */
object class19 {
//抽象,没有具体的值,没有 等号
  trait A  {
      println("trait A")
    }

  trait B {
    println("trait B")
  }

  trait C {
    println("trait C")
  }

  class Class1 extends A with B with C{
    println("class 1...")
  }
  def main(args: Array[String]): Unit = {
     new Class1()
  }
}

image.png

package level02

/*
多继承时,构造器调用顺序
1.先父后子。先调用父类构造器,再调用子类构造器
2.有 多个父类,从左到右的顺序去调用构造器
 */
object class19 {
  trait A  {
      println("trait A")
    }

  trait BB {
    println("trait BB")
  }

  trait B extends BB{
    println("trait B")
  }

  trait CC {
    println("trait CC")
  }

  trait C extends CC{
    println("trait C")
  }

  class Class1 extends B with A with C{
    println("class 1...")
  }
  def main(args: Array[String]): Unit = {
     new Class1()
  }
}

image.png