superとは
子クラスのインスタンスに対して、同名の親クラスのメソッドをそのまま呼び出すことが出来る
...と言われても、何だか分かりにくいので簡単なコードを書いてみました。
親クラスはHoge
class Hoge
def hogetyan
"ほげちゃん"
end
end
Hoge を継承している子クラスはPiyoとMoke
class Piyo < Hoge
def hogetyan
"ピヨピヨ"
end
end
class Moke < Hoge
def hogetyan
super
end
end
Piyo に対してhogetyanを呼び出してみる
piyo = Piyo.new
piyo.hogetyan -> #ピヨピヨ
- 親クラスの
def hogetyanはオーバーライドされてされている。
Moke に対してhogetyanを呼び出してみる
moke = Moke.new
moke.hogetyan -> #ほげちゃん
- Mokeクラスのmokeというインスタンスに対してsuper(親クラス
Hogeのhogetyan)が実行される。