Je pratique ce code depuis JavaTpoint pour apprendre l'héritage dans Scala. Mais je ne peux pas accéder au membre Bike de la classe Vehicle dont la valeur est initialisée à zéro. J'ai essayé par super référence de type mais il montre toujours la valeur remplacée. Pourquoi ne permet-il pas d'accéder au champ de super classe et dirige vers le champ de sous-classe surchargé (vitesse). voici le code et la sortie. En remerciant d'avance.Scala: Pourquoi ne pouvons-nous pas faire super.val?
class Vehicle {
val speed = 0
println("In vehicle constructor " +speed)
def run() {
println(s"vehicle is running at $speed")
}
}
class Bike extends Vehicle {
override val speed = 100
override def run() {
super.run()
println(s"Bike is running at $speed km/hr")
}
}
object MainObject3 {
def main(args:Array[String]) {
var b = new Bike()
b.run()
var v = new Vehicle()
v.run()
var ve:Vehicle=new Bike()
println("SuperType reference" + ve.speed)
ve.run()
}
}
"Comme nous le savons, après la compilation de Scala, il sera transféré au bytecode Java pour être compatible avec JVM." Cette phrase n'a aucun sens. Avez-vous utilisé google translator? – pedrofurla
@pedrofurla,;) – chengpohi