C# オーバーライドのサンプル

C#のオーバーライドのサンプルです。

目次

オーバーライド

  • クラスを継承するときに使用します。
  • 基底クラスで定義したメソッドを、派生クラスで同じメソッド名(引数、戻り値の型も一致)を記述して処理内容を上書きすることです。
  • 基底クラスのメソッドにvirtualキーワードをつけます。
  • 派生クラスのメソッドにoverrideキーワードをつけます。
  • 似た名前として、オーバーロードがありますがそれとは別です。オーバーロードと継承は関係ありません。
    C# オーバーロードのサンプル

オーバーライドのサンプル

オーバーライドのサンプルです。

3-9行目は基本クラスで11-17行目は派生クラスです。
5行目と13行目は同じメソッド名です。
5行目は、virtualというキーワードが入っています。
13行目は、overrideというキーワードが入っています。
27行目の変数「c1」は、基本クラスの型の変数ですが、オーバーライドで派生クラス「Class2」のprint1メソッドが実行されます。

using System;
// 基本クラス
class Class1
{
    public virtual string print1()
    {
        return "表示1";
    }
}
// 派生クラス
class Class2 : Class1
{
    public override string print1()
    {
        return "表示2";
    }
}

class Test1
{
    static void Main()
    {
        Class2 c2 = new Class2();
        Console.WriteLine(c2.print1()); // 表示2
    
        Class1 c1 = c2;
        Console.WriteLine(c1.print1()); // 表示2
    }
}

オーバーライドではないサンプル

上記のコードからvirtualとoverrideを指定しない場合のサンプルです。

3-9行目は基本クラスで11-17行目は派生クラスです。
27行目の変数「c1」は、基本クラスの型の変数です。基本クラス「Class1」のprint1メソッドが実行されます。

using System;
// 基本クラス
class Class1
{
    public  string print1()
    {
        return "表示1";
    }
}
// 派生クラス
class Class2 : Class1
{
    public  string print1()
    {
        return "表示2";
    }
}

class Test1
{
    static void Main()
    {
        Class2 c2 = new Class2();
        Console.WriteLine(c2.print1()); // 表示2
    
        Class1 c1 = c2;
        Console.WriteLine(c1.print1()); // 表示1
    }
}

virtual

override

関連の記事

C# クラスのサンプル
C# コンストラクタのサンプル
C# クラスの継承のサンプル
C# オーバーロードのサンプル
C# パーシャルクラスのサンプル

プログラムでつまったらteratailに登録して質問しましょう!↓↓↓

△上に戻る