【发布时间】:2018-05-09 22:26:19
【问题描述】:
有一件事我需要清楚。使用继承时,我可以在不使用任何 virtual 或 override 关键字的情况下覆盖方法。我的程序也在运行并给出正确的输出。那为什么我们有覆盖的概念,即使我们有继承。有什么不同?
这是我的代码
class InheritanceDemo
{
public void Mymeth()
{
Console.WriteLine("this is base");
}
}
class A1 : InheritanceDemo
{
public void Mymeth()
{
Console.WriteLine("this is derived");
}
}
主要方法:
static void Main(string[] args)
{
InheritanceDemo a = new A1();
A1 b = new A1();
a.Mymeth();
b.Mymeth();
}
输出:
这是基础
这是派生的
【问题讨论】:
-
将
b声明为InheritanceDemo而不是A1(InheritanceDemo b = new A1();),你会明白的。
标签: c# inheritance virtual overriding