37日目。Rubyでクラスの継承など。


クラスの継承

RubyⅢ(8分)
RubyⅣ(18分)

やっばりちょっと難しいですね・・・。
2周目だけどてこずりました。

クラスの継承


class Food < Menu
end

継承されるもの

親クラスのインスタンスとメソッド

子クラスにインスタンスを追加

クラス継承のところでattr_accessoにて追加できる。

class Food < Menu
  attr_accessor :calorie
end

子クラスにメソッドを追加

同様に、クラス継承のところでdefにて追加できる。

class Food < Menu
  attr_accessor :calorie
  def calorie_info
    return "#{self.name}#{self.calorie}kcalです"
  end
end

メソッドのオーバーライド(上書き)

子クラスと親クラスに同じ名前のメソッドがある場合、子クラスが優先される。

親クラスの同名のメソッドを呼び出す(super)

super(name: name, price: price)

日付を扱う(Dateクラス)

Rubyにて事前定義済みなので呼ぶだけでいい

# requireを用いて、Dateクラスを読み込んでください
require "date"

# 変数birthdayに、Dateクラスのインスタンスを代入してください
birthday = Date.new(2019,5,1)

# 変数birthdayをputsしてください
puts birthday

# 変数birthdayにsunday?メソッドを用いた結果をputsしてください
puts birthday.sunday?

# 変数todayに、Date.todayの戻り値を代入してください
today =Date.today

# 変数todayをputsしてください
puts today

# 変数todayに対してsunday?メソッドを用いた結果をputsしてください
puts today.sunday?

クラスメソッド

Date.todayのようちクラス名に対して呼び出すメソッドのこと

class A
  def A.B?
  end
end

インスタンスメソッドの中でクラスメソッドを呼び出す

class A
    def B
        if A.C
        end
    end
end
A.C

完成!

さらに頭がこんがらがっています。
インスタンスメソッド、クラスメソッド。
よく似ていますよね。。。実際どうやって使い分けるんでしょう。
アルゴリズム体操ですかね。。。

(所要時間 52分)
(2周目 21分)