ポケモンを例に考えるオブジェクト指向~継承~

以前の記事では、ポケモンを例にクラスとインスタンスについて紹介しました。

今回は継承について説明します。

スポンサーリンク

継承

継承とは、あるクラスのメンバ変数やメソッドを、別のクラスが引き継ぐことを言います。

親クラスを子クラスが継承するという言い方もします。

例えば、ピカチュウもニャースも、ポケモン図鑑番号、名前、レベルといった情報を持っています。

これを、ポケモンというクラスにしてしまい、ピカチュウやニャースといったクラスで継承させます。

そして、その種族に固有の情報(ポケモン図鑑番号など)はピカチュウ、ニャースといったクラスにそれぞれ持たせます。

継承はオブジェクト指向の中では分かりやすい概念かと思います。

プログラミング言語Rubyで書いてみる

ポケモンというクラスを作り、ピカチュウやニャースといったクラスに継承させます。

# クラス定義
class Pokemon
  # pokedex は「ポケモン図鑑番号」、name は「名前」、level は「レベル」に対応
  attr_accessor :pokedex, :name, :level
end

class Pikachu < Pokemon
  def initialize(name, level)
    self.pokedex = 25
    self.name = name
    self.level = level
  end
end

class Meowth < Pokemon  def initialize(name, level)
    self.pokedex = 52
    self.name = name
    self.level = level  endend

# インスタンス生成
pikachu = Pikachu.new('サトシのピカ', 100)meowth = Pikachu.new('ロケットだん', 100)

# インスタンスの情報を出力
p pikachu.inspect
p meowth.inspect

出力例

"#<Pikachu:0x000055e1f3e01070 @pokedex=25, @name=\"サトシのピカ\", @level=100>"
"#<Meowth:0x000055e1f3e01020 @pokedex=52, @name=\"ロケットだん\", @level=100>"

コメント