C# 子類構造函數base的

子類繼承基類,生成實例時,會先跑基類的構造函數,再跑子類的構造函數

    class Program
    {
        public static void Main(string[] args)
        {
            ClassA clsA = new ClassA();

            Console.ReadKey();
        }
    }

    public class Base
    {
        public Base()
        {
            Console.WriteLine("Base");
        }
    }

    public class ClassA : Base
    {
        public ClassA()
        {
            Console.WriteLine("ClassA");
        }
    }

結果如下:

然而在C#的類裏,一個類的構造函數並不是只限一個。當基類有多個構造函數的時候可以使用base關鍵詞給子類的構造函數選擇一個基類的構造函數。當子類構造函數不寫base的時候,默認爲base(),直接繼承基類的無參構造函數。

class Program
    {
        public static void Main(string[] args)
        {
            ClassA clsA = new ClassA();
            Console.WriteLine();
            ClassA clsA1 = new ClassA(1);
            Console.WriteLine();
            ClassA clsA2 = new ClassA(1,2);
            Console.WriteLine();
            ClassA clsA3 = new ClassA(1,"1");
            Console.WriteLine();
            ClassA clsA4 = new ClassA(1L);
            Console.WriteLine();
            ClassA clsA5 = new ClassA(1f);

            Console.ReadKey();
        }
    }

    public class Base
    {
        public Base()
        {
            Console.WriteLine("Base");
        }

        public Base(int a)
        {
            Console.WriteLine("Base int a");
        }

        public Base(string a)
        {
            Console.WriteLine("Base string a");
        }
    }

    public class ClassA : Base
    {
        public ClassA()
        {
            Console.WriteLine("ClassA");
        }

        public ClassA(int a):base(a)
        {
            Console.WriteLine("ClassA int a");
        }

        public ClassA(int a, int b) : base(a)
        {
            Console.WriteLine("ClassA int a int b");
        }

        public ClassA(int a, string b) : base(b)
        {
            Console.WriteLine("ClassA int a string b");
        }

        public ClassA(long a) : base()
        {
            Console.WriteLine("ClassA long a");
        }

        public ClassA(float a)
        {
            Console.WriteLine("ClassA float a");
        }
    }

結果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章