C# 如果从子实例调用,则不会调用具有正确数据类型的父方法
代码:C# 如果从子实例调用,则不会调用具有正确数据类型的父方法,c#,C#,代码: class Program { class A { public void abc(int x) { Console.WriteLine("abc from A"); } } class B : A { public void abc(double x) { Console.WriteLine("abc from B");
class Program
{
class A
{
public void abc(int x)
{
Console.WriteLine("abc from A");
}
}
class B : A
{
public void abc(double x)
{
Console.WriteLine("abc from B");
}
}
static void Main(string[] args)
{
B b = new B();
b.abc(100);
Console.ReadLine();
}
}
从类B实例调用abc()方法时,
即使我们将整数数据ie 100作为参数传递,为什么程序的执行会使用double定义的方法参数?
请注意,父类中已经为integer定义了一个方法
为什么上面程序的输出是“B的abc”而不是“A的abc”。请注意。您的方法过载,您正在观察导致类中存在类似方法解析的原因
B
,这将首先选择继承类中的匹配方法。您的方法过载,您正在观察导致类中存在类似方法解析的原因B
比继承类中的匹配方法先选择哪个。此外,如果将子类中的签名更改为字符串,则会调用父方法。100是一个有效的double,因此将调用隐藏在子类中的函数。此外,如果将子类中的签名更改为例如字符串,则将调用父方法。100是一个有效的双精度数,因此调用隐藏在子对象中的函数。