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