2017-08-29 14 views
0

Ich übe diesen Code von JavaTpoint zum Erlernen der Vererbung in Scala. Aber ich kann nicht auf das Mitglied Bike von der Klasse Fahrzeug zugreifen, dessen Wert auf Null initialisiert ist. Ich versuchte es mit einem Supertype-Verweis, aber es zeigt immer noch den überschriebenen Wert an. Kannst du mir sagen, wie ich mit einer Instanz der Bike-Klasse auf den Wert speed = 0 zugreifen kann? Hier ist der Code und die Ausgabe. Vielen Dank im Voraus.Zugriff auf Mitglieder der Superklasse mit einer Instanz der Unterklasse

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() 
    } 
} 

How do I get the result using instance of Bike.

Antwort

1

Ich denke an zwei Optionen können.

1) Speichern Sie den Wert, bevor Sie ihn überschreiben.

class Bike extends Vehicle{ 
    val oldspeed = speed 
    override val speed = 100 
    override def run(){ 
    println(s"Vehicle started at $oldspeed km/hr") 
    println(s"Bike is running at $speed km/hr") 
    } 
} 

2) Machen Sie den Wert def in der Basisklasse. Dann kann in der Unterklasse darauf zugegriffen werden.

class Vehicle{ 
    def speed = 0 
    def run(): Unit = {...} 
} 

class Bike extends Vehicle{ 
    override val speed = 100 
    override def run(){ 
    println(s"Vehicle started at ${super.speed} km/hr") 
    println(s"Bike is running at $speed km/hr") 
    } 
} 
+0

1) Speichern Sie den Wert in ein neues Feld in Bezug auf das Speichern in einem anderen Speicherort. Es weicht dem Zugang aus. 2) Das übergeordnete Ding funktioniert! – Learner

Verwandte Themen