hakeの日記

Windows環境でプログラミングの勉強をしています。

C# - クラス - 継承 その1

クラスの継承の継承を行う場合は

class 派生クラス名 : 基底クラス名

と記述する。
派生クラスのインスタンス生成時にコンストラクタが実行されるが、暗黙的に基底クラスの「引数なし」のコンストラクタが呼ばれる。実行は、最初に基底クラスのコンストラクタ、次に派生クラスのコンストラクタの順となる。
基底クラスのメソッドは、派生クラスでも実行できる。

using System;

//クラスの継承


class MyClass
{
    public MyClass()
    {
        Console.WriteLine("MyClassのコンストラクタ1実行");
    }
    public MyClass(int i)
    {
        Console.WriteLine("MyClassのコンストラクタ2実行");
    }

    public void MyMethod()
    {
        Console.WriteLine("MyClassのメソッド実行");
    }
}

class MyClassA : MyClass
{
    //暗黙的に基底クラスのコンストラクタを呼ぶ
    public MyClassA()
    {
        Console.WriteLine("MyClassAのコンストラクタ1実行");
    }
    public MyClassA(int i)
    {
        Console.WriteLine("MyClassAのコンストラクタ2実行");
    }

}

class MyMain
{
    static void Main(string[] args)
    {
        //引数なしのコンストラクタを呼ぶ
        MyClassA m1 = new MyClassA();
        m1.MyMethod();
        //引数ありのコンストラクタを呼ぶ
        MyClassA m2 = new MyClassA(1);
        m2.MyMethod();
    }
}

 

実行結果

MyClassのコンストラクタ1実行
MyClassAのコンストラクタ1実行
MyClassのメソッド実行
MyClassのコンストラクタ1実行
MyClassAのコンストラクタ2実行
MyClassのメソッド実行