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字段重写Example3

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
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?