+54 911 66509220

Blog

Blog
16 Feb 2015

Tutorial de Ruby – Parte 19 – Redefinición de métodos

/
Creado por
/
Comentarios0

Capítulo 15. Redefinición de métodos

 

En una subclase se puede modificar el comportamiento de las instancias redefiniendo los métodos de la superclase.

 

ruby> class Humano

ruby| def identidad

ruby| print “soy una persona.\n”

ruby| end

ruby| def tarifa_tren(edad)

ruby| if edad < 12

ruby| print “tarifa reducida.\n”

ruby| else

ruby| print “tarifa normal. \n”

ruby| end

ruby| end

ruby| end

nil

ruby> Humano.new.identidad

soy una persona.

nil

ruby> class Estudiante<Humano

ruby| def identidad

ruby| print “soy un estudiante.\n”

ruby| end

ruby| end

nil

ruby> Estudiante.new.identidad

soy un estudiante.

nil

 

Supongamos que en vez de reemplazar el método identidad lo que queremos es mejorarlo. Para ello podemos utilizar super

 

ruby> class Estudiante2<Humano

ruby| def identidad

ruby| super

ruby| print “también soy un estudiante.\n”

ruby| end

ruby| end

nil

ruby> Estudiante2.new.identidad

soy una persona.

también soy un estudiante.

nil

 

super nos permite pasar argumentos al método original. Se dice que hay dos tipos de personas …

 

ruby> class Deshonesta<Humano

ruby| def tarifa_tren(edad)

ruby| super(11) #quiero una tarifa barata

ruby| end

ruby| end

nil

ruby> Deshonesta.new.tarifa_tren(25)

tarifa reducida.

nil

ruby> class Honesta<Humano

ruby| def tarifa_tren(edad)

ruby| super(edad) #pasa el argumento entregado

ruby| end

ruby| end

nil

ruby> Honesta.new.tarifa_tren(25)

tarifa normal.

nil

Leave a Reply

Your email address will not be published.

* Copy This Password *

* Type Or Paste Password Here *

22,289 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.