C# クラスの継承とオーバーライドのサンプル

C#のクラスの継承とオーバーライドのサンプルです。

目次

継承のサンプル

継承のサンプルです。
基本クラスを継承して派生クラスを作成します。

継承元のクラスのことを「基本クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。

3-9行目は、基本クラス「Class1」を定義しています。
11-17行目は、派生クラス「Class2」を定義しています。
「Class2」の後に「:Class1」と記述することにより、Class2は、Class1を継承します。
27行目は派生クラスのインスタンスを生成しています。
28行目は派生クラスのインスタンスで基本クラスのメソッド「print1」を実行しています。
派生クラスの「Class2」は、基本クラスの「Class1」を継承しているため実行可能です。
using System;
// 基本クラス
class Class1
{
    public string print1()
    {
        return "表示1";
    }
}
// 派生クラス
class Class2 : Class1
{
    public string print2()
    {
        return "表示2";
    }
}

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

        // 派生クラスのインスタンスを生成
        Class2 c2 = new Class2();
        Console.WriteLine(c2.print1());//Class1のメソッドを実行 表示1
        Console.WriteLine(c2.print2());//表示2
    }
}

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

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

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# if文のサンプル
C# switch文のサンプル
C# while文とdo while文のサンプル
C# for文とbreakとcontinueのサンプル
C# クラスとコンストラクタのサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る