LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-05-03

クラスの継承

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0