base 最大的使用地方在面相对性开发的多态性上。(什么是多态,如何理解多态)
base可以【完成】创建派生类实例时调用其基类构造函数或者调用基类上已经被其他方法重写的方法
//关于base调用基类构造函数(只能是一个类的构造函数调用另一个类的构造函数)
public class A { public A(){ Console.WriteLine("Build A"); } } public class B : A { public B() :base() { Console.WriteLine("Build B"); } }
//创建一个B的实例对象,获得结果是同时Build A 和 Build B.
实例化 B类
输出结果:Build A
Build //进一步扩展 调用基类的构造函数的理public class BaseClass
{
int num;
public BaseClass()
{
Console.WriteLine("in BaseClass()");
}
public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int {0})", num);
}
}
public class DerivedClass : BaseClass
{
// 该构造器调用 BaseClass.BaseClass()
public DerivedClass()
: base()
{
}
// 该构造器调用 BaseClass.BaseClass(int i)
public DerivedClass(int i)
: base(i)
{
}
static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1)();
Console.ReadLine();
}
}
// 在派生类总调用基类的方法(实际是对虚方法的重写)
public class Q { public virtual void Hello() { Console.WriteLine("Hello"); } } public class W : Q { public override void Hello() { base.Hello(); Console.WriteLine("World"); } }
实例化 W类
输出结果 hello world