Al extender una clase en Scala, el usuario puede diseñar una clase heredada. Para extender una clase en Scala usamos la palabra clave extends. hay dos restricciones para extender una clase en Scala:
- Para anular el método en Scala, se requiere la palabra clave de anulación.
- Solo el constructor principal puede pasar parámetros al constructor base.
Sintaxis:
class base_class_name extends derived_class_name { // Methods and fields }
Ejemplo:
// Scala program of extending a class // Base class class Geeks1 { var Name: String = "chaitanyashah" } // Derived class // Using extends keyword class Geeks2 extends Geeks1 { var Article_no: Int = 30 // Method def details() { println("Author name: " + Name); println("Total numbers of articles: " + Article_no); } } // Creating object object GFG { // Driver code def main(args: Array[String]) { // Creating object of derived class val ob = new Geeks2(); ob.details(); } }
Producción:
Author name: chaitanyashah Total numbers of articles: 30
En el ejemplo anterior , Geeks1 es la clase base y Geeks2 es la clase derivada que se deriva de Geeks1 usando la palabra clave extends. En el método principal cuando creamos el objeto de la clase Geeks2, una copia de todos los métodos y campos de la clase base adquiere memoria en este objeto. Es por eso que al usar el objeto de la clase derivada también podemos acceder a los miembros de la clase base.
Ejemplo:
// Scala program of extending a class // Base class class Parent { var Name1: String = "geek1" var Name2: String = "geek2" } // Derived from the parent class class Child1 extends Parent { var Age: Int = 32 def details1() { println(" Name: " + Name1) println(" Age: " + Age) } } // Derived from Parent class class Child2 extends Parent { var Height: Int = 164 // Method def details2() { println(" Name: " + Name2) println(" Height: " + Height) } } // Creating object object GFG { // Driver code def main(args: Array[String]) { // Creating objects of both derived classes val ob1 = new Child1(); val ob2 = new Child2(); ob1.details1(); ob2.details2(); } }
Producción:
Name: geek1 Age: 32 Name: geek2 Height: 164
En el ejemplo anterior , Parent es la clase base Child1 y Child2 son la clase derivada que se deriva de Parent usando la palabra clave extends. En el método principal, cuando creamos los objetos de la clase Child1 y Child2, una copia de todos los métodos y campos de la clase base adquiere memoria en este objeto.
Ejemplo:
// Scala program of extending a class // Base class class Bicycle (val gearVal:Int, val speedVal: Int) { // the Bicycle class has two fields var gear: Int = gearVal var speed: Int = speedVal // the Bicycle class has two methods def applyBreak(decrement: Int) { gear = gear - decrement println("new gear value: " + gear); } def speedUp(increment: Int) { speed = speed + increment; println("new speed value: " + speed); } } // Derived class class MountainBike(override val gearVal: Int, override val speedVal: Int, val startHeightVal : Int) extends Bicycle(gearVal, speedVal) { // the MountainBike subclass adds one more field var startHeight: Int = startHeightVal // the MountainBike subclass adds one more method def addHeight(newVal: Int) { startHeight = startHeight + newVal println("new startHeight : " + startHeight); } } // Creating object object GFG { // Main method def main(args: Array[String]) { val bike = new MountainBike(10, 20, 15); bike.addHeight(10); bike.speedUp(5); bike.applyBreak(5); } }
Producción:
new startHeight : 25 new speed value: 25 new gear value: 5
En el programa anterior, cuando se crea un objeto de la clase MountainBike, una copia de todos los métodos y campos de la superclase adquiere memoria en este objeto.
Publicación traducida automáticamente
Artículo escrito por chaitanyashah707 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA