Extender clase en Scala

Suraj P 21 junio 2023
  1. Extender clase en Scala
  2. Extender clases de casos en Scala
  3. Conclusión
Extender clase en Scala

En este artículo, aprenderemos sobre la extensión de clases en Scala.

Extender clase en Scala

En Scala, extendemos una clase para lograr una de las partes más importantes de la programación orientada a objetos (OOP): la herencia. Para extender una clase en Scala, tenemos que usar una palabra clave extender.

Sintaxis:

derived_class_name extends base_class_name
{

}

Veamos un ejemplo para entenderlo mejor.

Código de ejemplo:

class Parent
{
    var child1: String = "Tony"
    var child2: String = "Nat"

}

class childOne extends Parent
{
    var age = 23
    var gender = "Male"

    def display()
    {
        println("Name : " +child1)
        println("Age : "+age)
        println("Gender : "+gender)
    }



}

class childTwo extends Parent
{
    var age = 18
    var gender = "Female"

    def display()
    {
        println("Name : " +child2)
        println("Age : "+age)
        println("Gender : "+gender)
    }



}


object myClass{

    def main(args: Array[String])
    {
     val obj1 = new childOne()
     val obj2 = new childTwo()

     obj1.display()
     obj2.display()


    }
}

Producción :

Name : Tony
Age : 23
Gender : Male
Name : Nat
Age : 18
Gender : Female

En el código anterior, podemos observar las clases childOne y childTwo datos heredados de la clase base parent.

Extender clases de casos en Scala

La clase de caso de Scala es un tipo especial de clase que es buena para modelar datos inmutables. Son muy útiles en la coincidencia de patrones.

Agregamos una palabra clave caso antes de la clase para convertirla en una clase de caso.

Código de ejemplo uno:

case class student (name:String, rollNo:Int)
object myClass
{

    def main(args: Array[String])
    {
        var st = student("Tony", 33)
        println("Name of the student is: " + st.name);
        println("Roll number of the student is: " + st.rollNo);
    }
}

Producción :

Name of the student is: Tony
Roll number of the student is: 33

Ahora veamos cómo extender o heredar estas clases de casos. A diferencia de las clases normales, aquí tenemos algunas restricciones.

Código de ejemplo dos:

case class records(schoolID: Int)
case class student (name:String, rollNo:Int) extends records
object myClass
{

    def main(args: Array[String])
    {
        var st = student("Tony", 33)

    }
}

Producción :

error: case class student has case ancestor records, but case-to-case inheritance is prohibited

El código anterior da un error porque la herencia de clase de caso a caso está prohibida en Scala. Según Scala, la clase caso sólo puede extender una clase normal, una clase abstracta o un rasgo.

Código de ejemplo tres:

Aquí tratamos de extender una clase abstracta.

abstract class records(schoolName: String)
{
    def name:Unit
}
case class student (schoolName:String) extends records(schoolName)
{
    override def name:Unit = println(schoolName)
}
object myClass
{

    def main(args: Array[String])
    {

        var st = student("delhi public school")
        st.name
    }
}

Producción :

delhi public school

Código de ejemplo cuatro:

Aquí tratamos de extender un rasgo.

trait information
{
  def id: Int
  def name: String
}
case class student (id:Int,name:String) extends information
{
    println(id+" "+name)
}
object myClass
{

    def main(args: Array[String])
    {

       val temp: information = student(230,"Tony")
    }
}

Producción :

230 Tony

Conclusión

Este artículo nos enseñó cómo extender una clase en Scala; también vimos cómo extender las clases case y observamos sus restricciones al heredar otra clase.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub