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