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

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

目次

継承のサンプル

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

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

        // No.3
        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.printとなっていますが、変数「c1」の参照するインスタンス「Class2」のメソッドが実行されます。

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を指定しない場合

クラスの継承がありメソッド名が同じで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
    }
}

関連の記事

C# if文のサンプル
C# switch文のサンプル
C# while文とdo while文のサンプル
C# for文とbreakとcontinueのサンプル
C# クラスのサンプル




△上に戻る