.net column
.NET開発者のためのブログメディア

アプリ作成

【C#の基礎】override修飾子でオーバーライドをする方法

 

「継承」とは、既存の基底クラスから派生クラスにメソッドを引き継ぐことをいいます。そして「オーバーライド」とは継承したクラスのメソッドの書き換えが可能になることです。この記事ではオーバーライドの方法を紹介していきます。

PG
再利用ができて記述量が圧倒的に減るので、よく継承を使ってプログラミングしていますが、オーバーライドって何でしょう……?
PL
オーバーライドは継承されたクラスのメソッドを上書きできることをいいます。通常継承しただけでは処理や名前を変更することができないのですが、オーバーライドするとそれが可能になります!

オーバーライドでできること

派生クラスでは、通常は基底クラスのメソッドを書き換えることができません。また、派生クラスで変更があった場合、二箇所を修正する必要があり、修正漏れの原因になります。

オーバーライドをすることで、派生クラスで基底クラスのメソッドを書き換えることや、新しくメソッドを作ることができます。
つまり、基底クラスと同じ名前のメソッドでも、異なった動きをすることが可能となるのです。C#では原則オーバーライドが不可能ですが、「virtual修飾子」を基底クラスに付与することによりオーバーライドが可能になります。

オーバーライドの実装例

オーバーライドするには、派生クラスのメソッドのアクセス修飾子の後ろに「override」をつけます。また、C#ではoverride修飾子とは別にオーバーライドされる基底クラスでは「virtual修飾子」が必要になります。以下の例では、”SbClass”という派生クラスが”SpClass”という基底クラスを継承しています。継承した”SbClass”でoverrideを使用してオーバーライドして、”orTest”の処理を変更しています。

実行結果

PG
再利用して、上書きできる。こんなに便利なものがあったのですね!
PL
はい。しかしいくら便利なものでも注意点がいくつかあるので、しっかり確認しておきましょう。

オーバーライドする上での注意点

基底クラスを利用しながら、メソッドの上書きができるという便利なオーバーライド。しかし、注意点があります。”static”をつけた静的メソッドはオーバーライドできません。また基底クラスのアクセス修飾子が”protected”を使用している場合、それより制限の厳しいアクセス修飾子を付与することが不可能です。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags