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");
}
}