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}")
}
参数传递的关键点
- 子类构造器接收参数:
(name:String, age:Int)- 这些参数用于传递给父类 - 调用父类构造器:
extends Animal(name, age)- 将子类接收的name和age传递给父类构造器 - 子类特有属性:
(var color:String)- 这是子类独有的参数,用var修饰使其成为类的属性
执行流程
scala
val dog1 = new Dog("旺财", 1, "黑色")
执行顺序:
- 调用
Dog构造器,传入"旺财",1,"黑色" - 通过
extends Animal(name, age)调用父类构造器 - 执行父类构造器中的
println - 返回子类构造器,执行子类构造器中的
println - 调用
dog1.eat()方法