Help us understand the problem. What is going on with this article?

Ruby クラスの継承について

クラスの継承

あるクラスに定義されたメソッドを、別の新規クラスで利用できるようにした上でクラスを定義すること。
クラスの継承には、親クラスと子クラスの関係がある。
元となるクラスを親クラス、親クラスのメソッドを引き継ぎ新しく作成するクラスを子クラスと呼ぶ。

具体的な例として2つのクラスを作成したいとする。生成するのはパトカーのようなインスタンスを生成するクラスとトラックのようなインスタンスを生成するクラス。どちらも共通して車としての特徴を持っているので、共通する「車としての特徴」を親クラスの中でまとめ、パトカーとトラックそれぞれの特徴はそれぞれのクラスでのみ定義。
パトカーやトラックの上位概念である「車」のクラスを作り、そこへ共通の特徴を定義しておく。車の特徴(親クラス)を継承することで、パトカー(子クラス)とトラック(子クラス)に車の特徴を記述する必要がなくなる。結果、パトカーとトラックだけの特徴を書くだけで済む上、それぞれの特徴が分かりやすくなる。

クラスの継承をする際には、クラスを宣言する際に「<」を用いて、以下のように記述する。

例)クラスの継承

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

end

以下に上記で例としてあげた車の例を実際にクラスの継承を用いたコードを記載
例)Carクラス(親クラス)

class Car
  def speed_up
    puts "加速します"
  end

  def speed_down
    puts "減速します"
  end

  def horn
    puts "プップー"
  end
end

例)PatrolCarクラス(子クラス)

class PatrolCar < Car  # クラスの継承
  def siren
    puts "ピーポーピーポー"
  end
end

例)TruckCarクラス(子クラス)

class TruckCar < Car  # クラスの継承
  def carry
    puts "荷物を載せます運びます"
  end
end

親クラスに共通のメソッドを定義することで、子クラスのコード量が少なくなり見やすくなる。
これは継承を使う大きなメリットで、親クラスで定義された共通のメソッドを変更するだけで、変更を子クラスへ容易に反映できる。
継承を使うことで、例えば技術の発展によってもし全ての車に「宙に浮かぶ機能」が追加された場合、トラックのクラスやパトカーのクラスなど全ての子クラスに機能を書き加えるのではなく、親となる車クラスを書き換えれば全ての車に変更を反映させることができる。

複数のクラスで共通のメソッドを定義したい時は、上位概念となる親クラスを作成して共通のメソッドを定義し、子クラスへ継承する。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした