ほげほげパッチ

有る事無い事 徒然なるままに

Ruby 深掘り #2

クラスの継承

親から子に引き継ぐ。

親クラス(スーパークラス

共通する部分を記載

子クラス(サブクラス)

個別の情報を記載

class Chichi
  def initialize(eye_type, height)
    @eye_type = eye_type
    @height = height
  end
  
  def attitude
    puts "目は#{@eye_type}で、背は#{@height}"
  end
end

# ChichiからMusukoへ承継
# インスタンス変数とインスタンスメソッドが引き継がれる
class Musuko < Chichi
end

chounan = Musuko.new("一重", "高い")

chounan.attitude
# => 目は一重で、背は高い


独自メソッドの定義

子クラス(Musuko)内にdef〜endで定義したものは、その子クラス独自のメソッドとなる

オーバーライド

親クラスに対して、同名の子クラスを定義 => 上書き

上記の例で言えば、Musuko内にattitudeメソッドを定義する

class Musuko < Chichi
  def attitude
    puts "目は#{@eye_type}で、背は#{@height}、長男"
  end
end