scala教程:override重写(覆盖)

覆盖

scala中的覆盖,与java中的覆盖,含义类似

子类 继承 父类后,子类就继承了父类的属性和方法,在子类中,也可以 覆盖 父类 的 val属性 和 方法

注意:与java相比,scala可以覆盖父类的 属性

override的规则

  1. 子类中的方法覆盖父类中的方法,必须在方法前写 override
  2. 子类中的 val属性 覆盖父类中的 val属性,必须在属性前写 override
  3. 父类中的 var属性 不可以覆盖,否则报错

例子

class Phone {
  val cpu:String = "骁龙"

  def call(num:String):Unit = {
    println("用 "+cpu+" 给 "+num+" 打电话")
  }
}

class IPhone extends Phone {
  override val cpu:String = "A15" //覆盖父类的属性

  override def call(num:String):Unit = { //覆盖父类的方法
    println("子类===用 "+cpu+" 给 "+num+" 打电话")
  }
}


object Phone{
  def main(args: Array[String]): Unit = {

    val phone:IPhone = new IPhone
    println(phone.cpu) //调用子类的属性
    phone.call("120") //调用子类的方法

  }
}

注意:覆盖父类的 var 变量,执行报错

object s29override {
  class Phone {
    var ram:Int = 16
  }


  class IPhone extends Phone {
    override var ram:Int = 8
  }


    def main(args: Array[String]): Unit = {
      val phone:IPhone = new IPhone
      println(phone.ram) //调用子类的属性
    }
}

原文出处:/show_1IX1D3RcWonj.html