重構現有類以使用繼承
假設我們有兩個類,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
繼承了這個新的常見超類。這消除了重複程式碼的需要