C#コンストラクタ継承

1965 ワード

//継承されたクラス.子クラスは親クラスの無参構造関数を呼び出します.下位レベルから、親クラス、親クラスの呼び出しが開始されます.
public class MyClass
    {
        public MyClass()
        {
            Console.WriteLine("MyClass:      ");
        }
        public MyClass(int a, int b)
        {
            Console.WriteLine("MyClass    :a={0}, b={1}.", a, b);
        }
    }

    public class MyClass2 : MyClass
    {
        public MyClass2()
        {
            Console.WriteLine("MyClass2:      ");
        }
        public MyClass2(int a, int b)
        {
            Console.WriteLine("MyClass2    :a={0}, b={1}.", a, b);
        }
    }

    //C#           
    public class MyClass3 : MyClass2
    {
        public MyClass3()
        {
            Console.WriteLine("MyClass3:      ");
        }
        public MyClass3(int a, int b)
        {
            Console.WriteLine("MyClass3    :a={0}, b={1}.", a, b);
        }
    }

    public class runMyApp
    {
        static void Main()
        {
            MyClass3 my = new MyClass3(3, 4);
            Console.WriteLine();
        }
    }

//1.コンストラクション関数継承の場合は,まずベースクラスのコンストラクション関数メソッドを呼び出し,次に自分のコンストラクション関数メソッドを呼び出す.
//2.サブクラスコンストラクション関数は、親の異なるパラメータの個数を継承するコンストラクション関数です.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace       
{
    //1.         ,            ,            
    //2.                       
    class Class1
    {
        public Class1(string a, string b)
        {
            Console.WriteLine("Class1 2        ,a={0},b={1}", a, b);
        }
    }

    class Class2 : Class1
    {
        public Class2():base("class2_a","class2_b")
        {
            Console.WriteLine("Class2          Class1    ");
        }
    }

    class Test
    {
        static void Main(string[] args)
        {
            Class2 class2 = new Class2();
        }
    }
}