- 构造函数
先执行父类的构造函数,再执行子类的构造函数的(废话,否则继承什么啊)
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();
}