Scala 字段覆盖
在Scala中,你也可以覆盖字段,但是需要遵循一些规则。下面是一些示例,说明如何覆盖字段。
Scala字段覆盖示例1
class Vehicle{
var speed:Int = 60
}
class Bike extends Vehicle{
var speed:Int = 100
def show(){
println(speed)
}
}
object MainObject{
def main(args:Array[String]){
var b = new Bike()
b.show()
}
}
输出:
Error - variable speed needs 'override' modifier
在Scala中,当你重写父类的方法或字段时,必须使用override关键字或override注解。如果不这样做,编译器会报错并停止程序的执行。
Scala字段重写示例2
class Vehicle{
val speed:Int = 60
}
class Bike extends Vehicle{
override val speed:Int = 100 // Override keyword
def show(){
println(speed)
}
}
object MainObject{
def main(args:Array[String]){
var b = new Bike()
b.show()
}
}
输出:
100
在Scala中,你只能重写那些在两个类中使用val关键字声明的变量。以下是一些有趣的示例,演示了整个过程。
Scala字段重写示例3
class Vehicle{
var speed:Int = 60
}
class Bike extends Vehicle{
override var speed:Int = 100
def show(){
println(speed)
}
}
object MainObject{
def main(args:Array[String]){
var b = new Bike()
b.show()
}
}
输出:
variable speed cannot override a mutable variable
Scala字段覆盖示例4
class Vehicle{
val speed:Int = 60
}
class Bike extends Vehicle{
override var speed:Int = 100
def show(){
println(speed)
}
}
object MainObject{
def main(args:Array[String]){
var b = new Bike()
b.show()
}
}
输出:
Error - variable speed needs to be a stable, immutable value