Ruby | Herencia

Ruby es el lenguaje orientado a objetos ideal. En un lenguaje de programación orientado a objetos, la herencia es una de las características más importantes. La herencia permite al programador heredar las características de una clase en otra clase. Ruby solo admite la herencia de una sola clase , no admite la herencia de múltiples clases, pero admite mixins . Los mixins están diseñados para implementar herencias múltiples en Ruby, pero solo heredan la parte de la interfaz. 

La herencia proporciona el concepto de «reutilización», es decir, si un programador quiere crear una nueva clase y hay una clase que ya incluye parte del código que el programador quiere, entonces puede derivar una nueva clase de la clase existente. Al hacer esto, aumenta la reutilización de los campos y métodos de la clase existente sin crear código adicional.

En la imagen de arriba, la clase A es una superclase y la clase B es una subclase o puede decir que la clase B se deriva de la clase A ( clase base ).

Términos clave en Herencia: 

  • Superclase: La clase cuyas características se heredan se conoce como superclase o clase base o clase padre .
  • Subclase: la clase que se deriva de otra clase se conoce como subclase , clase derivada o clase secundaria . También puede agregar sus propios objetos, métodos además de los métodos y objetos de la clase base, etc.

Nota: De manera predeterminada, cada clase en Ruby tiene una clase principal. Antes de Ruby 1.9 , la clase Object era la clase principal de todas las demás clases o se puede decir que era la raíz de la jerarquía de clases. Pero a partir de la versión Ruby 1.9 , la clase BasicObject es la superclase (clase principal) de todas las demás clases en Ruby. La clase de objeto es una clase secundaria de la clase BasicObject

Sintaxis:  

subclass_name < superclass_name

Ejemplo: 

Ruby

# Ruby program to demonstrate
# the Inheritance
 
#!/usr/bin/ruby
 
# Super class or parent class
class GeeksforGeeks
 
    # constructor of super class
    def initialize
         
        puts "This is Superclass"
    end
     
    # method of the superclass
    def super_method
         
        puts "Method of superclass"
    end
end
 
# subclass or derived class
class Sudo_Placement < GeeksforGeeks
 
    # constructor of deriver class
    def initialize
 
       puts "This is Subclass"
    end
end
 
# creating object of superclass
GeeksforGeeks.new
 
# creating object of subclass
sub_obj = Sudo_Placement.new
 
# calling the method of super
# class using sub class object
sub_obj.super_method

Producción: 

This is Superclass
This is Subclass
Method of superclass

Anulación del método Padre o Superclase: La anulación de métodos es una característica muy eficaz de Ruby. En la anulación de métodos, la subclase y la superclase contienen el mismo nombre de método, pero realizan tareas diferentes o podemos decir que un método anula a otro método. Si la superclase contiene un método y la subclase también contiene el mismo nombre de método, se ejecutará el método de la subclase.

Ejemplo:  

Ruby

# Ruby program to demonstrate
# Overriding of Parent or
# Superclass method
 
#!/usr/bin/ruby
 
# parent class
class Geeks
     
    # method of the superclass 
    def super_method
         
        puts "This is Superclass Method"
  end
     
end
 
# derived class 'Ruby' 
class Ruby < Geeks
     
    # overriding the method of the superclass 
    def super_method
         
        puts "Override by Subclass"
  end
end
    
# creating object of sub class
obj = Ruby.new
 
# calling the method
obj.super_method 

Producción: 

Override by Subclass

Uso del supermétodo en herencia: este método se usa para llamar al método de la clase principal en la clase secundaria. Si el método no contiene ningún argumento, automáticamente pasa todos sus argumentos. Un método super se define mediante la palabra clave super . Siempre que desee llamar al método de la clase principal del mismo nombre, simplemente puede escribir super o super() .

Ejemplo:  

Ruby

# Ruby Program to demonstrate the
# use of super method
 
#!/usr/bin/ruby
 
# base class
class Geeks_1
    
    # method of superclass accepting
    # two parameter
    def display a = 0, b = 0
        puts "Parent class, 1st Argument: #{a}, 2nd Argument: #{b}"
    end
end
 
# derived class Geeks_2
class Geeks_2 < Geeks_1
 
    # subclass method having the same name
    # as superclass
    def display a, b
         
        # calling the superclass method
        # by default it will pass
        # both the arguments
        super
         
        # passing only one argument
        super a
         
        # passing both the argument
        super a, b
         
        # calling the superclass method
        # by default it will not pass
        # both the arguments
        super()
         
        puts "Hey! This is subclass method"
    end
end
 
# creating object of derived class
obj = Geeks_2.new
 
# calling the method of subclass
obj.display "Sudo_Placement", "GFG"

Producción: 

Parent class, 1st Argument: Sudo_Placement, 2nd Argument: GFG
Parent class, 1st Argument: Sudo_Placement, 2nd Argument: 0
Parent class, 1st Argument: Sudo_Placement, 2nd Argument: GFG
Parent class, 1st Argument: 0, 2nd Argument: 0
Hey! This is subclass method

Publicación traducida automáticamente

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