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
)が実行される。