extends的作用

95 阅读1分钟
object class05 {
  // 父类: name, age
  class Animal(val name: String, var age: Int) {
    println(s"父类构造器 ..... ${name} ${age}")

    def eat(): Unit = {
      println(s"${name} ${age} eating....")
    }
  }

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

  def main(args: Array[String]): Unit = {
    val dog1 = new Dog("旺财", 1, "黑色")
    dog1.eat()
  }
}

extends的作用

extends是用于实现类的继承的关键字,它表示一个类(子类)继承另一个类(父类)的属性和方法。

  • 代码关联:在你提供的 Scala 代码中,class Dog(...) extends Animal(name, age) 表示Dog类继承了Animal类。这样Dog类就可以直接使用Animal类中定义的nameage属性和eat()方法,同时还能扩展自己的属性(如color)和方法。
  • 核心意义:继承的本质是代码复用,子类可以在父类的基础上 “拓展功能”,而无需重复编写父类已有的逻辑;同时也体现了面向对象的 **“is-a” 关系 **(如Dog是一种Animal)。

2. @Override的作用

@Override是一个注解(在 Java 中使用,Scala 也有类似机制但语法略有不同),用于明确表示一个方法是重写了父类的方法

  • 功能

    • 编译器检查:确保你确实是在重写父类的方法(如果父类没有这个方法,编译器会报错),避免因拼写错误等导致 “新增方法而非重写” 的问题。
    • 代码可读性:明确告知其他开发者这个方法是重写自父类,增强代码的可维护性。