Delegación en Kotlin

La delegación controla la asignación de poder/autoridad de una instancia a otra para cualquier objeto. Para implementaciones de clases y funciones, las delegaciones se pueden usar en relaciones estáticas y mutables entre ellas. La implementación de la herencia en clases y funciones se puede modificar con la ayuda de técnicas de delegación y los lenguajes de programación orientados a objetos lo admiten de forma innata sin ningún código repetitivo. La delegación se usa en Kotlin con la ayuda de la palabra clave «by»

Hay dos tipos de delegación presentes en Kotlin: 
Delegación explícita: compatible con todos los lenguajes orientados a objetos y se realiza pasando un objeto delegado (el que se implementará) a un objeto delegado (el que implementará el objeto delegado). 
Delegación implícita:  requiere soporte a nivel de idioma para
 

conceptolos ejemplos
Ejemplo 1:

Como sabemos que en Kotlin, la herencia nos proporciona una relación estática permanente entre objetos que no son mutables mientras que la delegación sí lo es, este hecho hace de Delegación una alternativa extremadamente poderosa. En este ejemplo, al usar la clase Newfeature, podemos implementar la clase base de delegación con nuevas funciones al delegar todos sus miembros públicos, es decir, mymessage y messageline, y estamos usando esta implementación con la ayuda de la palabra clave «by». 
 

Kotlin

// Kotlin program to illustrate the 
// concept of delegation
  
interface delegation 
{
    fun mymessage()
    fun mymessageline()
}
  
class delegationimplementation(val y: String) : delegation
{
    override fun mymessage() 
    { 
        print(y)
    }
    override fun mymessageline() 
    { 
        println(y)
    }
}
  
class Newfeature(m: delegation) : delegation by m
{
    override fun mymessage() 
    {
        print("GeeksforGeeks")
    }
}
  
// Main function
fun main() 
{
    val b = delegationimplementation("\nWelcome, GFG!")
      
    Newfeature(b).mymessage()
    Newfeature(b).mymessageline()
}

Producción:

GeeksforGeeks
Welcome, GFG!


Ejemplo 2: 

En este ejemplo, tenemos una clase base de delegación con valor val y método «mensaje divertido()». En la clase de implementación de delegación, estamos asignando valor a este «mensaje divertido» y luego desde otra clase estamos usando esta implementación usando la palabra clave «por» para agregar una nueva declaración con el mismo valor de valor;
 

Kotlin

// Kotlin program to illustrate the 
// concept of delegation
interface delegation
{
    val value: String
    fun mymessage()
}
  
class delegationimplementation(val y: String) : delegation
{
    override val value = "delegationimplementation y = $y"
    override fun mymessage() 
    {
        println(value)
    }
}
  
class Newfeatures(a: delegation) : delegation by a 
{
    override val value = "GeeksforGeeks"
}
  
fun main() 
{
    val b = delegationimplementation("Hello!GFG")
    val derived = Newfeatures(b)
      
    derived.mymessage()
    println(derived.value)
}

Producción:

delegationimplementation y = Hello!GFG
GeeksforGeeks

ventajas:

1. Es un método flexible, poderoso y mutable. 
2. Se pueden implementar múltiples interfaces con la ayuda de las existentes. 
3. Se utiliza para agregar nuevas funciones y valores a las implementaciones actuales.
 

Publicación traducida automáticamente

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