35
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

superって一体なんなんだ??(Ruby on Rails)

Last updated at Posted at 2020-02-20

superとは

子クラスのインスタンスに対して、同名の親クラスのメソッドをそのまま呼び出すことが出来る
...と言われても、何だか分かりにくいので簡単なコードを書いてみました。

親クラスはHoge


class Hoge  
  def hogetyan
    "ほげちゃん"
  end
end

Hoge を継承している子クラスはPiyoMoke


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(親クラスHogehogetyan)が実行される。
35
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?