<分区>
这是基于另一个我非常喜欢的关于多态性的问题。所以我玩弄它并修改它以理解它。但后来它动摇了我对多态性的理解。
我在一个类中创建了一个接口(interface),创建了一个类“A”,并实现了接口(interface)方法。我还创建了另一个扩展“A”的类“B”。另一个类“C”扩展了“B”。
当你运行它时,输出是:
BA->AEP
请注意 BA->
部分来自 B : A
类,而 AEP
是 A 中不同方法的默认参数: E
我做的时候怎么调用了两个方法
`A instance = new C();
Console.WriteLine(instance.GetName());`
为什么?
class Program
{
interface E
{
string GetName(string s);
}
public class A : E
{
public virtual string GetName(string s="AEP")
{
return s;
}
}
public class B : A
{
public override string GetName(string s="BAP")
{
return "BA-> " + s;
}
}
public class C : B
{
public new string GetName()
{
return "CB->";
}
}
static void Main()
{
A instance = new C();
Console.WriteLine(instance.GetName());
Console.ReadLine();
}
}