●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

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オーバーライドを使って柔軟に設計できます。

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

 

Ruby関連用語集

−−−−−  Ruby  −−−−−

Rubyのオブジェクト指向とは?クラスやメソッドの仕組みをわかりやすく解説

Rubyのクラス(Class)とは?オブジェクトの設計図を学ぼう

Rubyのモジュール(Module)とは?コードを整理・共有する仕組みを学ぼう!

Rubyのメソッド(Method)とは?定義と使い方をやさしく解説

Rubyのブロック(Block)とは?繰り返しやコールバック処理に使える便利な仕組み

Rubyのイテレータ(Iterator)とは?繰り返し処理の基本をマスターしよう!

RubyのEnumerableモジュールとは?便利な繰り返し処理を一気に習得!

RubyのProc(プロック)とは?ブロックをオブジェクト化して使いこなそう

RubyのLambda(ラムダ)とは?Procとの違いも含めてやさしく解説!

Rubyのシンボル(Symbol)とは?文字列との違いと使いどころをわかりやすく解説

Rubyのハッシュ(Hash)とは?キーと値のペアでデータを扱う基本構造

Rubyの配列(Array)とは?基本構文と便利な操作方法をマスターしよう!

Rubyのスコープ(Scope)とは?変数の見える範囲を理解しよう

Rubyのインスタンス変数(@変数)とは?クラスでデータを保持する基本

Rubyのクラス変数(@@変数)とは?全インスタンスで共有する値を管理する

Rubyの定数(Constant)とは?値を固定するための書き方と使い方

Rubyのグローバル変数($変数)とは?使い方と注意点をやさしく解説

Rubyのself(自己参照)とは?使い方と意味をやさしく解説!

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

Rubyのミックスイン(Mixin)とは?モジュールで機能を共有する方法

Rubyのメソッドのオーバーライド(Override)とは?継承したメソッドを再定義しよう

Rubyの例外処理(Exception Handling)とは?エラー発生時の安全な対処法

Rubyのbegin-rescue-end構文とは?エラーを安全に処理する基本構文

Rubyのyield(ブロック呼び出し)とは?ブロックの使い方と柔軟なメソッド設計

Rubyのrequire / loadとは?外部ファイルの読み込み方法と使い分け

Rubyのgem(RubyGems)とは?便利なライブラリの管理方法を解説!

Bundlerとは?Rubyのgemを簡単に管理できる便利ツール

RubyのRakeとは?ビルドやタスクを自動化する便利ツールを解説!

IRB(Interactive Ruby)とは?Rubyを手軽に試せる対話型ツール

Rails(Ruby on Rails)とは?Webアプリ開発の強力フレームワーク