- 构造函数
先执行父类的构造函数,再执行子类的构造函数的(废话,否则继承什么啊)
2.override
当子类override父类方法,创建子类对象时,只会实现子类方法。父类的方法根本就没有实现。
不论怎么引用,怎么转换,都只能调用子类方法(废话,对象里根本就没有父类方法,怎么调用也没用啊)
例子:
父类
class BaseClass
{
protected BaseClass()
{
Console.WriteLine("Create Base class");
}
public virtual void DoWork()
{
Console.WriteLine("Do base work");
}
}
{
protected BaseClass()
{
Console.WriteLine("Create Base class");
}
public virtual void DoWork()
{
Console.WriteLine("Do base work");
}
}
子类
class DerivedClass:BaseClass
{
DerivedClass()
{
Console.WriteLine("Create derived class");
}
public override void DoWork()
{
Console.WriteLine("Do derived work");
}
}
{
DerivedClass()
{
Console.WriteLine("Create derived class");
}
public override void DoWork()
{
Console.WriteLine("Do derived work");
}
}
Main
static void Main()
{
DerivedClass child1 = new DerivedClass();
//output
//Create Base class
//Create derived class
BaseClass child2 = new DerivedClass();
BaseClass child3 = (BaseClass)child1;
child1.DoWork();//Do derived work
child2.DoWork();//Do derived work
child3.DoWork();//Do derived work
Console.Read();
{
DerivedClass child1 = new DerivedClass();
//output
//Create Base class
//Create derived class
BaseClass child2 = new DerivedClass();
BaseClass child3 = (BaseClass)child1;
child1.DoWork();//Do derived work
child2.DoWork();//Do derived work
child3.DoWork();//Do derived work
Console.Read();
}