C# クラスの継承のサンプル

C#のクラスの継承のサンプルです。

目次

クラスの継承のイメージ

クラスを継承すると、継承先のクラスは継承元のクラスの機能を引き継ぎます。
継承先のクラスは、差分の機能を追加するだけでよくなります。

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

 

継承

class クラス名 : 継承元のクラス名

コード

クラスの継承のサンプルです。

using System;
class Class1
{
    public string print1()
    {
        return "表示1";
    }
}
class Class2 : Class1
{
    public string print2()
    {
        return "表示2";
    }
}
class Test1
{
    static void Main()
    {
        Class2 c2 = new Class2();
        Console.WriteLine(c2.print1());//表示1
        Console.WriteLine(c2.print2());//表示2
    }
}

2~8行目は、親クラスです。
10~15行目は、子クラスです。
9行目は、「Class2」の後に「:Class1」と記述することにより、Class2は、Class1を継承しています。
21行目は、4行目の親クラスのメソッドを実行します。
→子クラスは、親クラスのメソッドを再実装しないで済んでいます。継承の利点です。

 

親クラスを指定する(base)

親クラスを指定するサンプルです。
baseキーワードを指定します。

using System;
class Class1
{
    public string print1()
    {
        return "表示1";
    }
}
class Class2 : Class1
{
    public string print2()
    {
        return (base.print1());
    }
}
class Test1
{
    static void Main()
    {
        Class2 c2 = new Class2();
        Console.WriteLine(c2.print2());//表示1
    }
}

9行目のクラスは、2行目のクラスを継承しています。
13行目は、baseキーワードを使用して4行目の親クラスのメソッドを指定しています。

 

クラスの継承を禁止する(sealed)

アクセス修飾子 sealed class クラス名

クラスの継承を禁止するサンプルです。
sealedキーワードを使用します。

using System;
sealed class Class1
{
    public string print1()
    {
        return "表示1";
    }
}
//class Class2 : Class1
//{
//public string print2()
//    {
//        return "表示2";
//    }
//}
class Test1
{
    static void Main()
    {
        Class2 c2 = new Class2();
        Console.WriteLine(c2.print1());//表示1
        Console.WriteLine(c2.print2());//表示2
    }
}

2行目は、sealedキーワードがついています。
9行目のクラスは、2行目のクラスを継承できません。コンパイルエラーになります。

関連の記事

C# クラスの仕組みと使い方のサンプル
C# コンストラクタのサンプル
C# オーバーライドのサンプル
C# オーバーロードのサンプル
C# パーシャルクラスのサンプル

△上に戻る