Ruby Language Refactorizando las clases existentes para usar la herencia.


Ejemplo

Digamos que tenemos dos clases, Cat y Dog .

class Cat
  def eat
    die unless has_food?
    self.food_amount -= 1
    self.hungry = false
  end
  def sound
    puts "Meow"
  end
end

class Dog
  def eat
    die unless has_food?
    self.food_amount -= 1
    self.hungry = false
  end
  def sound
    puts "Woof"
  end
end

El método de eat es exactamente el mismo en estas dos clases. Si bien esto funciona, es difícil de mantener. El problema empeorará si hay más animales con el mismo método de eat . La herencia puede resolver este problema.

class Animal
  def eat
    die unless has_food?
    self.food_amount -= 1
    self.hungry = false
  end
  # No sound method
end

class Cat < Animal
  def sound
    puts "Meow"
  end
end

class Dog < Animal
  def sound
    puts "Woof"
  end
end

Hemos creado una nueva clase, Animal , y hemos movido nuestro método de eat a esa clase. Luego, hicimos que Cat y Dog heredaran de esta nueva superclase común. Esto elimina la necesidad de repetir el código.