これまで、メソッド、クラス、インスタンス、カプセル化、プロパティ、継承などを順に紹介してきました。今回は、継承するときによく使う「オーバーライド(override)」を紹介させていただきます。
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
【C#入門】プロパティとは?SetとGetを使った書き方をご紹介
オーバーライドとは
英語でoverrideとは優先する、という意味があります。 ITの分野では、ある場所で定義された設定や手続き、属性などを、別の定義に優先することを指します。
C#でも、継承と一緒に使えるorverrideという機能があり、基本クラスで作成したメソッドの内容を派生クラスで定義しなおすことが可能です。
利用するメリットとしては、継承した部分を目的に応じた形に書き換えることで柔軟な開発が出来ることです。
継承について詳しく学習したい方は、こちらの記事を参考にしてください^^
例えば、人狼ゲームで考えてみましょう。前回の継承についての記事で、基本クラスであるキャラクタークラスと村人クラス、人狼クラスを作成しました。その中で、基本クラスのDiscussで人狼は"議論しない"に変更したいときに、人狼クラスでオーバーライドすることができます。
基本的なオーバーライドの書き方
それでは、実際にどのように書くのか先ほどの例をもとにご紹介いたします。
設定すべき箇所を2つです。
①オーバーライドされる基本クラスのメソッド:virtualをつける
オーバーライドしても良いよ、という印です。仮想メソッドとも呼びます。
②オーバーライドする派生クラスのメソッド:overrideをつける
オーバーライドしますよ、という宣言です。
続いて、具体的にプログラムがどのように変わるのか、紹介します。
基本クラスの設定例
今回は、基本クラスでname、hpの変数とDisscussというメソッドを設定しています。その中で、DiscussメソッドをオーバーライドできるようにVirtualを設定します。
派生クラスでのオーバーライド例
続いて、派生クラスでオーバーライドしたいメソッドを作成します。
下記では、Discussというメソッドに対してoverrideしています。
以上です。とても簡単ですね!
ひとこと
オーバーライドについて、難しく考えてしまいがちのようですが、これまで紹介してきた順番で勉強すれば、理解しやすいのではないかと思います。
オブジェクト指向の中でまだピンと来ていない箇所があれば、過去記事も参考にしてみてください!
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
【C#入門】プロパティとは?SetとGetを使った書き方をご紹介
今回の説明は「確かな力が身につくC# 「超」入門」を参考にさせていただきましたが(例題はオリジナルです)、「もっと前から読んでおきたかった!」と痛感しています、、。もし、C#について学び始めたという方は是非参考にしてみてください!(2020年7月に出版された新書です(^^)