継承
継承とは、あるクラスをもとにして、新たなクラスを作ること
【書き方】
class Food < Menu ←「class 新しいクラス名 < 元となるクラス名」となるように記載する
end
- 新しいクラスは「子クラス」、元となるクラスは「親クラス」という。
- 継承されるもの:親クラスのインスタンス変数(情報)やメソッド(initializeやinfoなど)
子クラスにインスタンス変数(情報)を追加する
親クラスと同じように、「attr_accessor」を使う。
子クラスに追加したい情報(インスタンス変数)のみ、子クラスのタブに書く。
メソッドの上書き(オーバーライド)
親クラスにあるメソッドと同じ名前のメソッドを子クラスで定義すると、メソッドを上書きすることができる。
子クラスで定義したインスタンスは、子クラスで定義したものを優先して呼び出すようになっている。
そのため、親クラスと子クラスに同じ名前のメソッドがあった場合、子クラスのほうが呼び出される。
メソッド内の重複をまとめる
オーバーライドしたメソッドの中で「super」とすることで、親クラスの同名のメソッドを呼び出すことができる。
【書き方例】変数nameと変数priceが親クラスと子クラスで重複している場合
class Food < Menu
attr_accessor :calorie
def initialize(name:, price:, calorie:)
super(name: name,price: price) → superと()の間はスペースを空けない。
self.calorie = calorie
end
日付を扱う(Dateクラス)
DateクラスとはRubyがすでに用意しているクラスで、requireを用いて読み込むめば
自分でクラスを定義しなくても使える。
【読み込み方】
reqiure “date”
- ./dateではないので注意
【Dateクラスを用いるには】
reqiure “date”
date1 = Date.new(2023, 9, 11 ) ←引数に「年・月・日」を渡してDateインスタンスを生成
puts date1 → 「2023-9-11」と表示される
日曜日かどうか?
「sunday?」インスタンスメソッドを使う。
require “date” dateクラスを読み込む
birthday = Date.new(1991, 8, 19 ) Date.newを用いて、変数birthdayに引数を代入
puts birthday 変数birthdayを出力する
puts birthday.sunday? 「sunday?」メソッドを使う。この例の場合は「false」と表示される。
今日の日付のDateインスタンスを取得する
Date.todayとすることで、今日の日付のインスタンスをつくることができる
【書き方例】
require “date”
today = Date.today ←変数todayに、Date.todayの戻り値を代入
puts today ←変数todayを出力
クラスメソッドの定義
クラスメソッドは、「def クラス名.メソッド名」とすることで定義できる。
コメント