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