Programación en Ruby/Herencia
En ruby, la herencia se maneja herencia, pero no soporta multiple herencia, por lo que cada clase solo puede tener una superclase de la que herede comportamintos.
la sintaxis es la siguiente:
class ClasePadre def a_method puts 'b' end end class ClaseCualquiera < ClasePadre # < significa hereda def another_method puts 'a' end end
en esta sentencia se declara una ClasePadre,con un método, luego ClaseCualquiera, hija de ClasePadre con otro método, si hacemos lo siguiente:
instance = SomeClass.new instance.another_method instance.a_method
Salida
a b
vemos que se aplica la herencia de métodos correctamente al llamar desde una instancia hija un método
de la clase padre
Polimorfismo
Si queremos redefinir un método de la clase padre en la hija, solo sobrescribimos el método que deseamos redefinir en la clase hija, de esta manera, dependiendo de el tipo de la instancia desde la cual llamamos al método, se utilizará la correspondiente definición
Ademas, para llamar a la clase padre en cualquier momento desde un hija utilizamos la palabra reservada super, sin embargo, si quieres acceder a un clase superior a el padre en la jerarquía de herencia(como un abuelo, digamos), no se puede directamente, sin embargo hay una salida puedes darles nombre afiliados a los métodos que deseas usar luego, como un alias!, de hecho es exactamente esto, veamos
class X def foo "hello" end end class Y < X alias xFoo foo def foo xFoo + "y" end end puts X.new.foo puts Y.new.foo
Salida
hello helloy