LoginSignup
4
0

More than 3 years have passed since last update.

[Rails]オーバーライド(継承)について勉強してみた![初心者]

Posted at

オーバーライドとは?

親クラス(スーパークラス)で定義されたメソッドについて、小クラス(サブクラス)で同じ名前で再定義すること。

クラスの継承とは?

他のクラスをベースとして新しいクラスを作成することをクラスの継承と言います。

利用したいクラスが複数存在する場合、全てを1から作成していると骨が折れますし、共通する部分を複数のクラスに重複して定義する必要があります。
そこで、あるクラスが既に作成されている場合、そのクラスを拡張することで、新しいクラスを作成することができます。

クラスの継承は以下のように記載します。

class 子クラス名 < 親クラス名
end

継承の具体例

class Days
  def study
    puts "勉強する"
  end
end

class Holiday < Days
  def sleep
    puts "寝過ごす"
  end
end

holiday = Holiday.new
holiday.study
実行結果
勉強する

オーバーライドの具体例

class Days
  def study
    puts "勉強する"
  end
end

class Holiday < Days
  def sleep
    puts "寝過ごす"
  end

  def study
    super
    puts "休日だろうと勉強しなければ"
  end
end

holiday = Holiday.new
holiday.study
実行結果
勉強する
休日だろうと勉強しなければ

サブクラスにメソッド定義がない場合

サブクラスで定義していないメソッドが呼び出された時は、スーパークラスに同じ名前のメソッドがある場合に限り、スーパークラスのメソッドが呼び出せます。
具体例を以下に載せました。

class Days
  def study
    puts "勉強する"
  end
end

class Holiday < Days

end

holiday = Holiday.new
holiday.study
実行結果
勉強する

superclassメソッド

全てのクラスは、クラスメソッドとしてsuperclassメソッドを持っています。
また、スーパークラスのメソッドを引数なしで呼び出したい時には、super()も使用できます。

4
0
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
4
0