Extendiendo una clase en Scala

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *