override(オーバーライド)とは?
override(オーバーライド)とは、継承関係にあるクラスで派生クラスが基底クラスのメソッドを上書きすることを言います。
override(オーバーライド)ができると何がいいの?
継承関係にあるとき、派生クラスは基底クラスの機能をフル機能使う事ができますが、派生クラスごとに、微妙に異なる結果や、全く異なる結果を返却したくなる仕様がよく存在します。
すべての派生クラスで同じ結果を返す場合は問題ありませんが、一部の派生クラスでは異なる処理をさせたいという場合に、このオーバーライドをすることによって、任意の処理に変更することができます。
書き方
基底クラスではvirtualキーワードを使って、「このメソッドは派生クラスで、書き換えてもいいですよ」という意思表示をします。
派生クラスでは、基底クラスでvirtualキーワードがついているメソッドに対して、overrideキーワードを使って書き換えることが可能です。もちろん、書き換える必要のない場合は記述する必要はありません。
サンプルコード
次の例では、基底クラスのGetDataメソッドを書き換える方法を示しています。
namespace CS27 { class A1 { private int _privateValue; protected int ProtectedValue; public A1(int value) { _privateValue = value; } //基底クラス:virtualキーワード //「書き換えていいですよ」のサイン public virtual int GetData() { return 1; } } }
派生クラスでGetDataを上書きする場合は、public overrideに続けてスペースを打ち込むと、インテリセンスでGetDataを選択することができ、GetDataを選択した状態でTABキーを打ち込むと、メソッドが自動生成されます。その場合return base.GetData()と作成され、そのままの状態であれば、overrideをしても、しなくても、基底クラスの値が返却されることになることを示しています。上書きする場合は、何かしらの変更を行います。もちろん不要であれば、base.GetData()の記述を削除しても構いません。
namespace CS27 { class A2 : A1 { public A2(int value) : base(value) { base.ProtectedValue = 3; } //派生クラスで基底クラスのメソッドを書き換える //派生クラス:overrideキーワード //「書き換えますよ」という意味 public override int GetData() { return 2; } } }
- C#初心者のための基礎!C#文法2割の知識で8割の仕事をする方法!#1
- C#初心者のための基礎!ブロックと名前空間とクラスとメソッドを解説#2
- C#初心者のための基礎!#3値の扱い方。変数と定数をわかりやすく解説!
- C#初心者のための基礎!データ型の種類と使い分けをわかりやすく解説#4
- C#初心者のための基礎!値型と参照型の違いと使い方をわかりやすく解説#5
- C#初心者のための基礎!データ型の変換のやり方をわかりやすく解説#6
- C#初心者のための基礎!配列の使い方をわかりやすく解説#7
- C#初心者のための基礎!動的配列List<T>の使い方をわかりやすく解説#8
- C#初心者のための基礎!演算子の使い方をわかりやすく解説#9
- C#初心者のための基礎!if文とswich文の使い方をわかりやすく解説#10
- C#初心者のための基礎!while文の書き方と使い方をわかりやすく解説#11
- C#初心者のための基礎!do-While文の書き方と使い方をわかりやすく解説#12
- C#初心者のための基礎!for文の書き方と使い方をわかりやすく解説#13
- C#初心者のための基礎!foreach文の書き方と使い方をわかりやすく解説#14
- C#初心者のための基礎!オブジェクト指向の意味をわかりやすく解説#15
- C#初心者のための基礎!クラスの意味と使い方をわかりやすく解説#16
- C#初心者のための基礎!コンストラクタの意味と使い方をわかりやすく解説#17
- C#初心者のための基礎!アクセス修飾子の意味と使い方をわかりやすく解説#18
- C#初心者のための基礎!メソッドの意味と使い方をわかりやすく解説#19
- C#初心者のための基礎!フィールドの意味と使い方をわかりやすく解説#20
- C#初心者のための基礎!インスタンスの意味と使い方をわかりやすく解説#21
- C#初心者のための基礎!カプセル化の意味と使い方をわかりやすく解説#22
- C#初心者のための基礎!プロパティの意味と使い方をわかりやすく解説#23
- C#初心者のための基礎!Disposeとusingの意味と使い方を解説#24
- C#初心者のための基礎!staticスタティックの意味と使い方を解説#25
- C#初心者のための基礎!継承の意味と使い方をわかりやすく解説#26
- C#初心者のための基礎!override(オーバーライド)の使い方を解説#27
- C#初心者のための基礎!ポリモーフィズムとインタフェースの使い方を解説#28
- C#初心者のための基礎!ポリモーフィズムと抽象クラスの使い方を解説#29
- C#初心者のための基礎!例外Exceptionの意味と使い方をわかりやすく解説#30