Escala | Anulación de campo

En cualquier lenguaje de programación orientado a objetos, Overriding es una función que permite que una subclase proporcione una implementación específica de un método o campo que ya proporciona una de sus superclases. En Scala, Overriding se establece explícitamente en comparación con Overriding en Java, ya que aquí se pueden anular  tanto los métodos como los campos , pero tiene algunas restricciones que es obligatorio seguir.
 

Reglas para la anulación de campos

Las reglas para la anulación de campos son las siguientes: 
 

  • La regla más importante es que debemos utilizar la palabra clave anular o anular la notación al anular los campos de la superclase en las subclases; de lo contrario, el compilador arrojará un error y finalizará la ejecución del programa. 
     
  • Para ejecutar una anulación de campo , necesitamos anular las variables que se declaran utilizando solo la palabra clave val tanto en la superclase como en las subclases. 
     
  • La anulación de campos no puede anular var , porque podemos leer y escribir var
     

Ahora, veamos algunos ejemplos para ilustrar estas restricciones.
Ejemplo : 
 

Scala

// Scala program of Field
// Overriding
 
// Creating class
class Shapes
{
 
    // Creating a variable with
    // val keyword
    val description:String = "shape"
}
 
// Creating a subclass
class shape_1 extends Shapes
{
 
    // Overriding field using
    // 'override' keyword
    override val description:String ="It is a circle."
 
    // Defining a method
    def display()
    {
     
        // Displays output
        println(description)
    }
}
 
// Creating a subclass
class shape_2 extends Shapes
{
 
    // overriding field using
    // 'override' keyword
    override val description:String ="It is a square."
 
    // Defining a method
    def display()
    {
     
        // Displays output
        println(description)
    }
}
 
// Creating object
object GfG
{
 
    // Main method
    def main(args:Array[String])
    {
     
        // Creating instances for all
        // the sub-classes
        var x = new shape_1()
        var y = new shape_2()
     
        // Calling methods
        x.display()
        y.display()
     
    }
}
Producción: 

It is a circle.
It is a square.

 

Ahora, podemos ver en el ejemplo anterior que val se utiliza tanto en la superclase como en la subclase, por lo que la anulación del campo era practicable; de ​​lo contrario, habría arrojado un error. Aquí, el campo de la superclase es val , que se reemplaza en las subclases mediante la palabra clave override .
Ejemplo : 
 

Scala

// Scala program of Field
// Overriding
 
// Creating class
class Shapes
{
 
    // Creating a variable with
    // val keyword
    val description:String = "shape"
}
 
// Creating a subclass
class shape_1 extends Shapes
{
 
    // Overriding field using
    // 'override' keyword
    override var description:String ="It is a circle."
     
    // Defining a method
    def display()
    {
     
        // Displays output
        println(description)
    }
}
 
// Creating a subclass
class shape_2 extends Shapes
{
 
    // overriding field using
    // 'override' keyword
    override var description:String ="It is a square."
 
    // Defining a method
    def display()
    {
     
        // Displays output
        println(description)
    }
}
 
// Creating object
object GfG
{
 
    // Main method
    def main(args:Array[String])
    {
     
        // Creating instances for all
        // the sub-classes
        var x = new shape_1()
        var y = new shape_2()
     
        // Calling methods
        x.display()
        y.display()
     
    }
}
Producción: 

prog.scala:17: error: anulando la descripción del valor en la clase Shapes de tipo String; 
la descripción de la variable debe ser un valor estable e inmutable que 
anula la descripción de la variable: String = «Es un círculo». 

prog.scala:32: error: anulando la descripción del valor en la clase Shapes de tipo String; 
la descripción de la variable debe ser un valor estable e inmutable que 
anule la descripción de la variable: String = «Es un cuadrado». 

dos errores encontrados 

 

Es el mismo ejemplo que el anterior, pero aquí se encuentran errores como aquí, var se usa en las subclases para anular los campos que no es posible ya que val no puede ser anulado por var como se indicó anteriormente.
Ejemplo : 
 

Scala

// Scala program of Field
// Overriding
 
// Creating class
class Animals
{
 
    // Creating a variable with
    // 'var' keyword
    var number:Int = 2
}
 
// Creating a subclass
class Cat extends Animals
{
 
    // Overriding field using
    // 'override' keyword
    override var number:Int = 4
     
    // Defining a method
    def show()
    {
     
        // Displays output
        println("We have " + number + " cats.")
    }
}
 
// Creating object
object GfG
{
 
    // Main method
    def main(args:Array[String])
    {
     
        // Creating instance of the
        // sub-class
        var cat = new Cat()
     
        // Calling method
        cat.show()
     
    }
}
Producción: 

prog.scala:17: error: anulando el número de variable en la clase Animales de tipo Int; 
el número de variable no puede anular una variable mutable 
anula el número de var: Int = 4 

se encontró un error 

 

Aquí, var se utiliza para anular campos, lo que no es posible según lo establecido en las reglas anteriores, por lo que se encuentra un error.
 

Publicación traducida automáticamente

Artículo escrito por nidhi1352singh 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 *