1. 程式人生 > >c#面向物件之繼承(經驗)

c#面向物件之繼承(經驗)

假設有一個基類A,另外有個繼承A的子類B,當建立物件a時===A a = new B();a.PrintObj();===

用a去呼叫方法PrintObj(),在方法內部會出異常;因為dtObj沒有被例項化;如果去掉A的無參建構函式裡的

註釋,呼叫正確;子類呼叫父類方法,方法類用到的物件必須先在無參建構函式中例項化

類A

    class A
    {
        DataTable dtObj = null;
        public A()
        {
            //dtObj = new DataTable();
            Console.WriteLine("預設建構函式A");
        }
        public A(string value)
        {
            dtObj = new DataTable();
            Console.WriteLine("帶引數建構函式A");
        }
        public void PrintObj()
        {
            Console.WriteLine(dtObj.Rows.Count);
        }
    }

子類B:

    class B:A
    {
        public B()
        {
            Console.WriteLine("預設建構函式B");
        }
        new public void Print()
        {
            Console.WriteLine("A");
        }      
    }