重构现有类以使用继承

假设我们有两个类,CatDog

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

eat 方法在这两个类中完全相同。虽然这有效,但很难维护。如果有更多的动物使用相同的 eat 方法,问题会变得更糟。继承可以解决这个问题。

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

我们创建了一个新类 Animal,并将我们的 eat 方法移动到该类。然后,我们让 CatDog 继承了这个新的常见超类。这消除了重复代码的需要