下面的继承有什么不同
本文关键字:什么 继承 | 更新日期: 2023-09-27 18:17:45
下面是简单的继承
public class BaseClass
{
public string Draw()
{
return "Draw from BaseClass";
}
}
public class ChildClass:BaseClass
{
public string Draw()
{
return "Draw from ChildClass";
}
}
static void Main(string[] args)
{
ChildClass c = new ChildClass();
console.writeline(c.Draw());
}
上面的实现将打印从Childclass中提取
下面是重写 的用法public class BaseClass
{
public virtual string Draw()
{
return "Draw from BaseClass";
}
}
public class ChildClass:BaseClass
{
public override string Draw()
{
return "Draw from ChildClass";
}
}
static void Main(string[] args)
{
ChildClass c = new ChildClass();
console.writeline(c.Draw());
}
上面的实现将打印从Childclass中提取
在第二个代码段中,Draw被声明为虚函数,这意味着您可以从类型为BaseClass
的变量调用继承的方法。
BaseClass b = new ChildClass ();
b.Draw () // will call ChildClass.Draw
文档
- msdn - 10.5.3虚方法 c#工作站教程-第9课:多态性
有趣的事情. .上面列表中的第二个链接使用了与您提供的相同的代码片段。
在第一个实现中,如果你从BaseClass
内部调用Draw()
,输出将是"从基类绘制"。但在第二个实现中,它将是"从Child Class中绘制"。这里有一个解释:http://weblogs.sqlteam.com/mladenp/archive/2007/04/09/60168.aspx