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分)