class継承とその身近な例について
おはようございます。Qiita初投稿です。
本日は、rubyのclass継承と、その身近な例についてお話しできたらと思います!
ちょうど最近、なるほどなあと思ったので、共有したいと思います。
もしかしたら、あたりまえすぎるかもしれません。
ただ、もし読んでいただいた方にとって、何かプラスになれば幸いです!
1、クラス継承とは
クラス継承とは、あるクラスを元に他のクラスを作成することです。
元になったクラスを親クラス、新しいクラスを子クラスといいます。
親から子に引き継ぐことで、引継ぎ前のクラスも使えつつ、新しいクラスを作成できます。
なんて感動的な親子関係。
2、書き方
小クラスの横に<をつかって親クラスを書くだけ
class Child < Parent
#ParentクラスをChildクラスに継承
クラスのなので、頭文字は大文字です。
こうすることで、親クラスを使えます。
3、親クラスの何が使えるの?
主に二つです。
・親クラスのインスタンス変数
・親クラスのインスタンスメソッド
以下に、クラス継承の例を記載しました。
処理の流れをざっと記載します。
①barcelonaと言う変数に、Barcelonaクラスのインスタンスを作成
②Barcelonaクラス作成時に、Soccer_playerクラスのinitializeメソッドが適用される。引数がインスタンス変数に代入される。
③barcelonaにBarcelonaクラスのplayerメソッドを適用している。
class Soccer_player #親クラス
def initialize(name,position)
@name = name
@position = position
#新しくインスタンスを作成
end
end
class Barcelona < Soccer_player
def player
puts "私の名前は#{@name}、ポジションは#{@position}、現在、バルセロナに所属しています。"
#Soccer_playerクラスのインスタンス変数を使用している。
end
end
barcelona = Barcelona.new("メッシ","フォワード")
#Soccer_playerクラスを引き継いでいるので、Soccer_playerクラスのイニシャライズメソッドが適用される。
barcelona.player
#処理結果:私の名前はメッシ、ポジションはフォワード、現在、バルセロナに所属しています。
4、身近な例
ここまでクラス継承について記載しましたが、ぶっちゃけどうでしょう?
へぇーって感じじゃないですか?
なので、最近身近でなるほどな!と感じた例を紹介したいと思います!
クラス継承が行われている場面があります。
それは、railsのコントローラーです。
コントローラーの冒頭を見てみると、こんな記載があります。
class HogesController < ApplicationController
これってつまり、ApplicationControllerをHogescontrollerへ引き継いでいるんですね。
ちなみにですが、作成したコントローラーには上記の記述が入っています。
なので、どのコントローラーもApplicationControllerの処理を実施できるわけです。