class Parent
{
public void foo()
{
Console.WriteLine("Hello from the foo inside Parent");
}
public virtual void bar()
{
Console.WriteLine("Hello from the bar inside Parent.");
}
public void foobar()
{
Console.WriteLine("Hello from the foobar inside Parent.");
}
}
class Child : Parent
{
public void foo()
{
base.foo();
Console.WriteLine("Hello from the foo inside Child");
}
public override void bar()
{
base.bar();
Console.WriteLine("Hello from the bar inside Child.");
}
public new void foobar()
{
base.foobar();
Console.WriteLine("Hello from the foobar inside Child.");
}
}
上面就是我使用来测试我在C#中继承knowlege的代码,但我这里有一个困惑:孩子里面C#继承和压倒一切的
- 功能
foo()
隐藏的foo()
家长。 - 功能
bar()
里面的孩子隐藏父母的bar()
。 - 功能
foobar()
孩子隐藏在里面的父母的bar()
()
所有三个功能使用不同的技术来隐藏父功能。任何人都可以请引导我,这三个之间有什么不同,以及哪一个使用什么时候?
请你解释一下,在你的第二个代码示例中,为什么/如何重写被调用的方法,而我们甚至没有实例化孩子?由于我对多态不熟悉,所以请不要介意我的问题对你来说是否愚蠢! –
@KamranAhmed我改变了样品的顺序,最后显示最有趣的情况。所以,我想你是在问最后一个案子。实际上你在这儿实例化了一个小孩 - 'new Child()'是实例化的。但是您将对此实例的引用分配给基本类型的变量。 –