Rubyのメソッドのオーバーライド(Override)とは?継承したメソッドを再定義しよう
Rubyでは、親クラスで定義されたメソッドを、子クラスで再定義することができます。
これを「オーバーライド(Override)」と呼びます。
オーバーライドを使うと、共通の構造を保ちつつ、クラスごとに異なる動作を定義でき、柔軟な設計が可能になります。
オーバーライドの基本構文
class Animal
def speak
puts "何かが鳴いています"
end
end
class Dog < Animal
def speak
puts "ワンワン!"
end
end
dog = Dog.new
dog.speak # → ワンワン!
この例では、Dog
クラスが Animal
クラスの speak
メソッドを上書きしています。
オーバーライド時に super を使う
class Animal
def speak
puts "動物の鳴き声:"
end
end
class Cat < Animal
def speak
super
puts "ニャー"
end
end
Cat.new.speak
super
を使うと、親クラスの同名メソッドを呼び出すことができます。
オーバーライドで処理を追加する際に便利です。
オーバーライドの使いどころ
- 親クラスの基本動作を変更したいとき
- 子クラスごとに異なる処理をしたいとき
- 共通処理の上に個別処理を追加したいとき(super)
オーバーライドの注意点
- 同じ名前で再定義すると元のメソッドは上書きされる
- 引数の数や意味が変わらないように設計するのが望ましい
super
を使うときは、引数の受け渡しも意識する
super に引数を渡す例
class Animal
def info(name)
puts "名前:#{name}"
end
end
class Dog < Animal
def info(name)
super(name)
puts "種類:犬"
end
end
Dog.new.info("ポチ")
まとめ
Rubyのメソッドのオーバーライド(Override)は、継承を活用した柔軟な設計に欠かせない機能です。
子クラスで親クラスのメソッドを再定義することで、動作をカスタマイズできます。
super
を併用すれば、親の処理を引き継ぎつつ拡張も可能です。
共通化とカスタマイズを両立させたいときに、積極的に活用していきましょう。