Written by Kasumi

Rubyで親クラスを継承した子クラスを作成する方法

Rubyである親クラスを継承した子クラスを作成する方法について知りたい。

本記事ではこの様な悩みを解決。

クラス継承の概要・子クラスを作成する方法について解説します。

クラスの継承とは?

クラスの継承とは、あるクラスを親クラス(スーパークラス)として子クラス(サブクラス)でも使える様にする事を表します。

子クラスの作成方法

#親クラス
class Name
  def initialize(name)
      @name = name
  end
end

#子クラス
class Greeting < Name
  def message()
      puts "#{@name}さん、こんにちは"
  end
end

#インスタンス
Greeting.new("kasumi").message()
#kasumiさん、こんにちは

親クラスを継承した子クラス作成のコード例です。

子クラスをインスタンス(実体化)する時に、親クラスで定義されてるnameクラス変数を呼び出す事ができてます。

子クラスを作成する方法は以下の通りです。

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

上記で実装できます。

親クラスのメソッドを子クラスで上書きする

#親クラス
class Name
  def initialize(name)
      @name = name
  end
  def message()
    puts "#{@name}さん、おはようございます"
  end
end

#子クラス
class Greeting < Name
  def message()
      puts "#{@name}さん、こんにちは"
  end
end

#インスタンス
Greeting.new("kasumi").message()
#kasumiさん、こんにちは

親クラスにあるメソッドを子クラスでオーバーライド(上書き)する事ができます。

オーバーライドの方法は、親クラスで使われてるメソッド名をそのまま子クラスに流用する事でオーバライドできます。

オーバライドする前に親クラスのメソッドを呼び出す

#親クラス
class Name
  def initialize(name)
      @name = name
  end
  def message()
    puts "#{@name}さん、おはようございます"
  end
end

#子クラス
class Greeting < Name
  def message()
      super
      puts "#{@name}さん、こんにちは"
  end
end

#インスタンス
Greeting.new("kasumi").message()
#kasumiさん、おはようございます
#kasumiさん、こんにちは

superを使う事でオーバライドする前の親クラスのメソッドを呼び出す事ができます。

superの使い方は以下の通りです。

class 子クラス < 親クラス
def オーバーライドするメソッド名()
super
実行処理
end
end

オーバライドするメソッドの中にsuperを記述します。

上記で、明示的にオーバライド前のメソッドを呼び出せます。

まとめ

クラス継承の概要・親クラスを継承した子クラスを作成する方法について紹介しました。

以上で解説を終わります。

関連記事

Ruby

Rubyで定数やメソッドをまとめてmodule化する方法

2022.08.18
58
Ruby

【Ruby】同じ値で要素を満たす配列を生成する方法

2022.08.14
88
Ruby

Rubyでオリジナルのメソッドを定義する方法

2022.08.12
86
Ruby

【Ruby】配列要素を追加・上書き・削除する方法

2022.07.25
210