Escala | Mezclas de rasgos

Podemos extender varios rasgos de Scala con una clase o una clase abstracta que se conoce como rasgo Mixins . Vale la pena saber que solo podemos extender los rasgos o la combinación de rasgos y la clase o la combinación de rasgos y la clase abstracta. Incluso es obligatorio aquí mantener la secuencia de rasgos Mixins o de lo contrario el compilador arrojará un error.
Nota:

  1. Los rasgos Mixins se utilizan para componer una clase.
  2. Una Clase difícilmente puede tener una sola superclase, pero puede tener numerosos Mixins de rasgos. La superclase y el rasgo Mixins pueden tener supertipos idénticos.

Ahora, veamos algunos ejemplos.

  • Ampliación de clase abstracta con rasgo
    Ejemplo:

    // Scala program of trait Mixins
      
    // Trait structure
    trait Display
      
        def Display() 
      
    // An abstract class structure
    abstract class Show
        def Show() 
      
    // Extending abstract class with
    // trait
    class CS extends Show with Display
    {
          
        // Defining abstract class
        // method
        def Display()
        {     
            // Displays output
            println("GeeksforGeeks"
        
          
        // Defining trait method
        def Show()
        {                                     
            // Displays output 
            println("CS_portal"
        
    }
      
    // Creating object
    object GfG
        // Main method
        def main(args:Array[String])
        
              
            // Creating object of class CS
            val x = new CS() 
              
            // Calling abstract method
            x.Display() 
              
            // Calling trait method
            x.Show() 
        
    Producción:

    GeeksforGeeks
    CS_portal
    

    Aquí, el orden correcto de los Mixins es que necesitamos extender cualquier clase o clase abstracta primero y luego extender cualquier rasgo usando una palabra clave con .

  • Ampliación de clase abstracta sin rasgo
    Ejemplo:

    // Scala program of trait Mixins
      
    // Trait structure
    trait Text
        def txt() 
    }
      
    // An abstract class structure
    abstract class LowerCase
        def lowerCase() 
      
    // Extending abstract class 
    // without trait
    class Myclass extends LowerCase
    {
          
        // Defining abstract class
        // method
        def lowerCase()
        
            val y = "GEEKSFORGEEKS"
              
            // Displays output
            println(y.toLowerCase()) 
        
          
        // Defining trait method
        def txt()
        {                                     
          
            // Displays output 
            println("I like GeeksforGeeks"
        
      
    // Creating object
    object GfG
        // Main method
        def main(args:Array[String])
        
              
            // Creating object of 'Myclass'
            // with trait 'Text'
            val x = new Myclass() with Text
              
            // Calling abstract method
            x.lowerCase() 
              
            // Calling trait method
            x.txt() 
        
    Producción:

    geeksforgeeks
    I like GeeksforGeeks
    

    Por lo tanto, a partir de este ejemplo podemos decir que el rasgo puede incluso extenderse mientras se crea el objeto.
    Nota: si primero extendemos un rasgo y luego la clase abstracta, el compilador arrojará un error, ya que ese no es el orden correcto de los rasgos Mixins.

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 *