Polimorfismo en Kotlin

La palabra polimorfismo significa tener muchas formas. En palabras simples, podemos definir el polimorfismo como la capacidad de un mensaje para mostrarse en más de una forma.  

Ilustración de la vida real: polimorfismo

Una persona al mismo tiempo puede tener diferentes características. Como un hombre al mismo tiempo es padre, esposo, empleado. Entonces, la misma persona posee un comportamiento diferente en diferentes situaciones. Esto se llama polimorfismo. El polimorfismo se considera una de las características importantes de la programación orientada a objetos. El polimorfismo nos permite realizar una sola acción de diferentes maneras. En otras palabras, el polimorfismo le permite definir una interfaz y tener múltiples implementaciones. La palabra «poli» significa muchos y «morfos» significa formas, por lo que significa muchas formas.

Tipos de polimorfismo

El polimorfismo se divide principalmente en dos tipos:  

  1. Polimorfismo en tiempo de compilación
  2. Polimorfismo en tiempo de ejecución

Ejemplos

Ejemplo 1: polimorfismo en tiempo de compilación

Comencemos con el polimorfismo en tiempo de compilación. En el polimorfismo en tiempo de compilación, el nombre funciona, es decir, la firma sigue siendo la misma pero los parámetros o el tipo de devolución son diferentes. En el momento de la compilación, el compilador resuelve qué funciones estamos tratando de llamar según el tipo de parámetros y más. Mira este ejemplo:

Kotlin

fun main (args: Array<String>) {
  println(doubleof(4))
  println(doubleof(4.3))
  println(doubleof(4.323))
}
 
fun doubleof(a: Int):Int {
  return 2*a
}
 
fun doubleOf(a:Float):Float {
  return 2*a
}
 
fun doubleof(a:Double):Double {
  return 2.00*a
}

Producción:

8
8.6
8.646

Ejemplo 2: polimorfismo en tiempo de ejecución

Ahora, hablemos del polimorfismo en tiempo de ejecución. En el polimorfismo en tiempo de ejecución, el compilador resuelve una llamada a métodos anulados/sobrecargados en tiempo de ejecución. Podemos lograr el polimorfismo en tiempo de ejecución mediante la anulación de métodos. Probemos un ejemplo en el que extendemos una superclase y anulamos uno de sus métodos miembro:

Kotlin

fun main(args: Array<string>){
  var a = Sup()
  a.method1()
  a.method2()
   
  var b = Sum()
  b.method1()
  b.method2()
}
 
open class Sup{
   open fun method1(){
       println("printing method 1 from inside Sup")
   }
   fun method2(){
       println("printing method 2 from inside Sup")
   }
}
 
class Sum:Sup(){
   override fun method1(){
       println("printing method 1 from inside Sum")
   }
}

Producción:

printing method 1 from inside Sup
printing method 2 from inside Sup
printing method 1 from inside Sum
printing method 2 from inside Sup

Aquí, el compilador resuelve, en tiempo de ejecución, qué método ejecutar.

Publicación traducida automáticamente

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