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()
}
}