C# クラスの継承の仕組みとサンプル

C#のクラスの継承の仕組みとサンプルです。

目次

仕組み クラスの継承とは
サンプル 継承の書き方
  親クラスのコンストラクタを実行する(base)
  親クラスのメソッドを実行する(base)
  クラスの継承を禁止する(sealed)

クラスの継承とは

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

継承元のクラスのことを「基底クラス 」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行目は、親クラスです。
9~15行目は、子クラスです。
9行目は、「Class2」の後に「:Class1」と記述することにより、Class2は、Class1を継承しています。
21行目のprint1メソッドは子クラスに存在しませんが実行できます。4行目の親クラスのメソッドを実行します。
→子クラスは、親クラスのメソッドを再実装しないで済んでいます。継承の利点です。

親クラスのコンストラクタを実行する(base)

親クラスのコンストラクタを実行するサンプルです。 baseを使用します。

using System;

namespace Project1
{
	class Class1
	{
		public string colorName;
		public Class1(string name)
		{
			this.colorName = name;
		}
	}
	class Class2 : Class1
	{
		public Class2(string name) : base(name)
		{
		}
	}
	class Test1
	{
		static void Main()
		{
			Class1 c2 = new Class2("赤");
			Console.WriteLine(c2.colorName); //赤
		}
	}
}

15行目は、コンストラクタです。
: base(引数)で親クラスのコンストラクタを実行します。

親クラスのメソッドを実行する(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
    }
}

13行目はbaseキーワードで親クラスのメソッドを実行します。

クラスの継承を禁止する(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# パーシャルクラスのサンプル

△上に戻る