重構現有類以使用繼承
假設我們有兩個類,Cat 和 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
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 方法移動到該類。然後,我們讓 Cat 和 Dog 繼承了這個新的常見超類。這消除了重複程式碼的需要