覆盖
scala中的覆盖,与java中的覆盖,含义类似
子类 继承 父类后,子类就继承了父类的属性和方法,在子类中,也可以 覆盖 父类 的 val属性 和 方法
注意:与java相比,scala可以覆盖父类的 属性
override的规则
- 子类中的方法覆盖父类中的方法,必须在方法前写
override - 子类中的 val属性 覆盖父类中的 val属性,必须在属性前写
override - 父类中的 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) //调用子类的属性
}
}
