class Program
{
static void Main(string[] args)
{
Father f = new Father();
f.doWhat();
Child c = new Child();
c.doWhat();
Console.ReadKey();
}
}
public class Father
{
string str = "打孩子";
public void doWhat()
{
Console.WriteLine(str);
}
}
public class Child:Father
{
string str = "跑";
new public void doWhat() //注意这里的new
{
Console.WriteLine(str);
}
}
(子类的new可以没有,详见C#中new的三种用法)
先实现一个普通的继承关系
得到的结果是:
父类对象输出“打孩子”,子类对象输出“跑”
如果初始化一个父类类型的子类对象呢?
Father f_c = new Child();
f_c.doWhat();
这里编译器对f_c进行了类型的隐式转换,虽然new的是child,但实际还是father类型,所以输出结果仍是“打孩子”