父类,子类

44 阅读1分钟

好处:不劳而获。 重写:子类对父类的同名方法进行重写! 父类和子类的构造器调用顺序:先调用父类的构造器,再调用子类的构造器

object class03 {
  class Father() {
    println("Father 构造器被调用")
  }

  class Son extends Father() {
    println("Son 构造器被调用")
  }

  def main(args: Array[String]): Unit = {
    // new Father()
    new Son()
  }
}
object class04 {
  // 父类
  class Dog(var name: String, var age: Int) {
    println(s"Dog ${name}, ${age} 构造器被调用")
  }

  // 子类 中华田园犬
  // 子类带参构造器
  // 1. 继承父类的属性。不用写 val, var 修饰符
  // 父类构造器
  // 直接传入参数,不用写属性的类型
  class RuralDog(name: String, age: Int) extends Dog(name, age) {
    println("RuralDog 构造器...")
  }

  def main(args: Array[String]): Unit = {
    new RuralDog("旺财", 3)
  }
}

  • 父类和子类的构造器调用顺序:先调用父类的构造器,再调用子类的构造器
  • 带参构造器
  • 相比父类,子类有新的属性

object class05 {
  // 父类
  class Dog(var name: String, var age: Int) {
    println(s"Dog ${name}, ${age} 构造器被调用")
  }

  // 子类 中华田园犬
  // 子类带参构造器
  // 1. 继承父类的属性。不用写 val, var 修饰符
  // 2. 自己的新属性,加上var, val修饰符
  // 父类构造器
  // 直接传入参数,不用写属性的类型
  class RuralDog(name: String, age: Int, var color: String) extends Dog(name, age) {
    println(s"RuralDog 的构造器...${color}")
  }

  def main(args: Array[String]): Unit = {
    var dog1 = new RuralDog("旺财", 3, "土黄色")
  }
}