面向对象编程继承与构造器解析

27 阅读1分钟

1. 父类 Animal

scala

class Animal(val name:String, var age:Int) {
    println(s"父类构造器 ... ${name} ${age}")
    def eat():Unit = {
        println(s"${name} ${age} eating...")
    }
}

2. 子类 Dog

scala

class Dog(name:String, age:Int)(var color:String) extends Animal(name, age) {
    println(s"子类构造器 ... ${name} ${age} ${color}")
}

参数传递的关键点

  1. 子类构造器接收参数(name:String, age:Int) - 这些参数用于传递给父类
  2. 调用父类构造器extends Animal(name, age) - 将子类接收的 name 和 age 传递给父类构造器
  3. 子类特有属性(var color:String) - 这是子类独有的参数,用 var 修饰使其成为类的属性

执行流程

scala

val dog1 = new Dog("旺财", 1, "黑色")

执行顺序:

  1. 调用 Dog 构造器,传入 "旺财"1"黑色"
  2. 通过 extends Animal(name, age) 调用父类构造器
  3. 执行父类构造器中的 println
  4. 返回子类构造器,执行子类构造器中的 println
  5. 调用 dog1.eat() 方法