クラスの継承・オーバーライドとは?(Ruby)
こんにちは、にゅ〜ぶるです。
前回は、オブジェクト指向について書いたので、その続きを書いておこうと思います。
今回は、「クラスの継承」「オーバーライド」について。
継承とは?
「継承」とは、クラスの共通部分をまとめたクラスを作り、それを継承することをいいます。継承される側のクラスを「スーパークラス(親クラス)」、継承して新しく作ったクラスを「サブクラス(子クラス)」と言います。
では、実際に前回の例を用いて、説明していきましょう。
共通部分をまとめる?
前回の例で使いました、人間クラスを思い出してみてください。
# 人間クラス
class Person
# 名前(name)のゲッター
def name
@name
end
# 名前(name)のセッター
def name=(name)
@name = name
end
# 自己紹介
def selfIntroduction
p "こんにちは、#{self.name}です。"
end
end
この人間クラスを継承して、にゅ〜ぶるクラスを作りましょう。
Rubyでは、継承する際は、「子クラス < 親クラス」と書きます。
# にゅ〜ぶるクラス
class Newburu < Person
end
継承する事で、親クラスのプロパティ・メソッドが、子クラスでもそのまま利用する事が出来ます。
newburu = Newburu.new
newburu.name = "にゅ〜ぶる"
newburu.selfIntroduction
実行結果
"こんにちは、にゅ〜ぶるです。"
さて、継承するメリットはなんでしょう?
今回は、にゅ〜ぶるクラスを作りましたが、Aさんクラス、Bさんクラスと、量産した際、プロパティ・メソッドを毎回書く必要がなくなりますね!
ここに、各クラス独自のプロパティ・メソッドを追加して、拡張するだけで良いんです。
でも、自己紹介って、人それぞれですよね。そんな時、どうしたら良いでしょう?
その時に使うのが、「オーバーライド」です。そう、名前の通り、上書きをします。
Rubyでは、これも簡単にかけます。
# にゅ〜ぶるクラス
class Newburu < Person
# 自己紹介
def selfIntroduction
p "こんちゃー、#{self.name}やで!!"
end
end
そう、こんな感じに、単純に書き直すだけ。
Rubyでは、メソッドが呼ばれた時、自クラスから親クラスの順に検索され、存在すればそのメソッドが実行されます。
実行結果
"こんちゃー、にゅ〜ぶるやで!!"
クラスを継承して、カスタマイズしたい部分だけをオーバーライドする。
こうして、色々なクラスを作っていってくださいね!
ディスカッション
コメント一覧
まだ、コメントがありません