scala trait2

54 阅读1分钟
object class1119 {
  /**
   * 多继承时 构造器的作用
   * 1.先父后子 先调用父类构造器 后调用子类构造器
   * 2.如果有多个父类 从左到右的顺序去调用构造器
   */

  trait A {
    println("trait A")
  }

  trait BB {
    println("trait BB")
  }

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


  /**
  trait B {
    println("trait B")
  }
*/

  trait CC {
    println("trait CC")
  }

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

  /**
  trait C {
    println("trait C")
  }
*/


  /**
  class Class1 extends A with B{
    println("class 1...")
  } //先调用A
*/


/**
  class Class1 extends B with A{
    println("class 1...")
    } //先调用B
*/

  class Class1 extends B with A with C {
    println("class 1...")
  }

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

}
object class11192 {
  /**
   * trait 和 抽象类class的区别?
   *
   * 1.相同点:
   * 可以被继承 extends
   * 属性和方法 抽象属性 具体属性 抽象方法 具体方法
   * 都不能被实例化 不能new
   *
   * 2.共同点:
   * trait 支持多继承 抽象类不能多继承
   */

  trait A {
    println("trait A")
  }

  trait B {
    println("trait A")
  }

  class C extends A with B{

  }

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

}