Duck Typing - Tensho97/Aprende-a-Aprender GitHub Wiki

¿Qué es?

Es un término usado en los lenguajes que no tienen un tipado fuerte. Se refiere a la idea de no necesitar un tipo para invocar un método existente en un objeto. Si el método está definido en él, puedes invocarlo. Es decir, nos centramos menos en la clase del objeto, y en cambio, le damos prioridad a su comportamiento: los métodos que se pueden usar y las operaciones que podemos hacer con ese objeto. Los lenguajes que usan este tipado no miran los tipos ni las herencias de los objetos, sino que permiten asignar cualquier cosa a cualquier variable (por ejemplo Javascript o Python). El término "Duck Typing" nació de la idea de que "si algo anda como un pato, grazna como un pato y nada como un pato, pues entonces es un pato". Un ejemplo sencillo:

Si la clase Hija es una herencia de la clase Padre, podemos hacer:

Padre p = new Hija();

Una vez hecho, sólo pueden llamarse a métodos o atributos que estén declarados en la clase Padre. Si Padre tiene metodo1() e hija tiene metodo2(), sólo podemos hacer p.metodo1(), mientras que p.metodo2() dará error.

En los lenguajes que usan el Duck Typing podríamos hacer:

p = new Hija();

y luego llamar a p.metodo1() o al p.metodo2(). Pero también podríamos hacer:

p = new Padre();

y llamar a p.metodo1(), dando error p.metodo2() porque solo es de Hija. Es decir, no le importa el tipo, pero el error saltará a la hora de hacer la llamada al método "porque el pato no es capaz de graznar".



Autora: Vanesa