🐕

superを使って柔軟なコードを書こう

2023/04/20に公開

はじめに

オブジェクト指向プログラミングにおいて、継承を利用することでコードの再利用性を向上させることができます。今回は、superの概念を使って、継承を活用しながら柔軟なコードを書く方法について解説します。

superとは?

'super'は、現在のクラスのスーパークラス(親クラス)の同名のメソッドを呼び出すために使用されるキーワードです。これにより、サブクラスでメソッドをオーバーライドしても、親クラスのメソッドの機能を保持しながら新しい機能を追加することができます。

※オーバーライドとは、サブクラス(子クラス)がスーパークラス(親クラス)のメソッドを新たに定義し直すことです。

superを利用しない場合

class Animal
  def make_sound
    puts "The animal makes a sound."
  end
end

class Dog < Animal 
  def make_sound 
    puts "The dog barks."
  end
end

animal = Animal.new
animal.make_sound #"The animal makes a sound."

dog = Dog.new
dog.make_sound #"The dog barks."

superを利用した場合

class Animal
  def make_sound
    puts "The animal makes a sound."
  end
end

class Dog < Animal
  def make_sound
    super
    puts "The dog barks."
  end
end

dog = Dog.new
dog.make_sound
# The animal makes a sound.
# The dog barks.

superを利用することにより、DogクラスがAnimalクラスのmake_soundメソッドをオーバーライドしつつ、superを使って親クラスのメソッドを呼び出しています。

また、オブジェクトの作成はDogクラスのみで実装が可能になるため簡潔なコードで済みます。

まとめ

superを使って親クラスのメソッドを適切に呼び出すことで、コードの維持管理が容易になります。
これらの概念を理解し、適切に利用することで、オブジェクト指向プログラミングのパワーを十分に活用することができます。

Discussion