継承の基本、下準備について
みなさんこんにちは🌚
欲しいPS4ソフトが多過ぎて後期の単位が不安なブルーノです。ようやくPS4の時代がきました。金がなくなってゆく....
さて今回は継承の基本についてやっていきたいと思います。
継承について
C#の非常に重要な概念であるクラスの中でもとても重要な要素である継承。その名の通りその性質を引き継ぐことができる機能のことです。どういうことか、まずは下の画像を見てみましょう
まず、3行めから10行めはBruno026クラスですがこれは基本クラス(Base Class)と言います。そしてすぐ下の12から19行めのBruno027クラスの名前の横に「 : Bruno026」とありますがこれはBruno026から派生したということを表し、このBruno027クラスを派生クラス(Derived Class)と言います。そしてBruno028クラスではこれらのクラスをインスタンス化し色々と実験しています。まず25行めで派生クラスであるBruno027クラスをインスタンス化していますが、26,28行めでわかるように基本クラスであるBruno026クラスの中身を用いています。つまり、派生クラスは基本クラスのpublicなメンバを全て引き継ぐことができるのです。privateなクラスは呼び出せないので注意してください。そしてもう一つ注意するのが30,31,32行めでわかるように基本クラスはたとえその前に派生クラスが作られてもなくなったり、変わったりするわけではないということです。
先ほど派生クラスはprivateを引き継げないと言いましたが、では基本クラスの引き継ぐ要素はすべてpublicにすればいいのかというとそれも少し問題があり、publicメンバはその他のクラスからも影響を受ける場合があるのです。この場合は、protectedアクセス修飾子を使います。protected修飾子を頭につけたメンバは、派生クラスからはアクセスできますが、他のクラスからはアクセスできなくなります。なので、メンバを安全にしつつ、派生クラスを作りたい場合はこのprotected修飾子を使いましょう。
では最後に名前の隠蔽について説明しておきます。またかっこいい名前の用語が出てきました。基本クラスと派生クラスに同じ名前のメンバを持たせたい時、派生クラスの方のメンバにnewキーワードをつけることで、同じ名前のメンバを持つことができます。このメンバを呼び出した時、基本クラスのメンバは無視されます。これを名前の隠蔽と言います。逆に無視された基本メンバを呼び出したい時は、baseキーワードをつけて呼び出します
では今回の大まかなまとめをします。今回の結果をまとめると
- クラスの横に「 : 」をつけることでその基本クラスの要素を引き継いだ派生クラスを持つことができる
- 派生クラスを作っても基本クラスはなくならない
- private修飾子を用いると派生クラスからも見えなくなるので派生クラスから見えつつ他のクラスからは見えないようにしたい場合はprotected修飾子を使う
- newキーワードを頭につけることで基本クラスのと同じ名前のメンバを持つことができる。その場合基本クラスの同じ名前のメンバは隠蔽され、それを呼び出したい時はbaseキーワードを使う
この4つですね。次回からは、もっと別の要素についてもまとめていきたいと思います。ここから少しずつ複雑になっていくので、ゆっくり噛み締めながら勉強していきたいです。
来年あたりは新しいPS4のゲームがたくさん出るようでとても楽しみです!!でも最近のソニーのゲームはみんなで一緒にいてわいわいできるものが全然ない気がします( ´Д`)y━・~~
オンラインで化け物みたいな数同時通信できるものが増えるのは嬉しいですがやっぱり一緒にやりたいです笑