●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

Rubyの継承(Inheritance)とは?コードの再利用と拡張の基本

Rubyでは、既存のクラスをもとに新しいクラスを作ることができる「継承(Inheritance)」という仕組みがあります。 これにより、共通の機能を親クラスにまとめて、子クラスで再利用・拡張することができます。

継承の基本構文

class Animal
  def speak
    puts "何かが鳴いています"
  end
end

class Dog < Animal
end

dog = Dog.new
dog.speak  # → 何かが鳴いています

このように、Dog < Animal と書くことで、Animal クラスを継承した Dog クラスが定義されます。

メソッドのオーバーライド

class Dog < Animal
  def speak
    puts "ワンワン!"
  end
end

dog = Dog.new
dog.speak  # → ワンワン!

親クラスに定義されたメソッドを、子クラスで再定義することを「オーバーライド」といいます。

super の使い方

class Animal
  def speak
    puts "鳴き声:"
  end
end

class Cat < Animal
  def speak
    super
    puts "ニャー"
  end
end

Cat.new.speak

super は、親クラスの同名メソッドを呼び出すために使います。 親の機能を引き継ぎつつ、処理を追加したい場合に便利です。

initialize メソッドの継承と super

class Animal
  def initialize(name)
    @name = name
  end
end

class Dog < Animal
  def initialize(name, breed)
    super(name)
    @breed = breed
  end
end

コンストラクタ initialize も継承対象です。 親クラスの初期化を行うには、super を使って親の initialize を呼び出す必要があります。

すべてのクラスは Object を継承

puts String.superclass  # → Object
puts Object.superclass  # → BasicObject

Rubyでは、すべてのクラスは Object クラス(または BasicObject)を継承しています。 これにより、共通のメソッド(to_s, inspectなど)がすべてのクラスで使えます。

継承とモジュール(Mixin)の違い

項目継承モジュール(Mixin)
書き方< を使うinclude, extend
親は何個?1つのみ複数可
目的クラスの拡張共通機能の共有

Rubyでは単一継承のみ可能ですが、モジュールを使えば多くの機能を共有できます。

継承を使うメリット

  • コードの重複を減らせる
  • 共通処理を親にまとめて管理できる
  • 機能の拡張・修正がしやすい

まとめ

Rubyの継承(Inheritance)は、クラス同士の関係を作り、共通の機能を再利用する仕組みです。 < を使って親クラスを指定し、必要に応じて superオーバーライドを使って柔軟に設計できます。

ただし、継承関係が深くなるとコードが複雑になりやすいため、適切な場面で使うことが大切です。 共通処理の共有だけなら モジュール の活用も検討しましょう。