【发布时间】:2017-10-27 07:39:13
【问题描述】:
假设我有继承自 B 类的 B 类和 C:
namespace ConsoleApp1
{
class B
{
public void foo(B obj)
{
Console.WriteLine("B1 ");
}
public void foo(C obj)
{
Console.WriteLine("B1 ");
}
}
class C : B
{
public void foo(B obj)
{
Console.WriteLine("C1 ");
}
public void foo(C obj)
{
Console.WriteLine("C1 ");
}
}
public class Program
{
static void Main(string[] args)
{
B c = new C();
B b = new B();
b.foo(c);
c.foo(b);
c.foo(c);
Console.ReadLine();
}
}
}
我得到了这些结果:
B1
B1
B1
我不明白这部分到底发生了什么:
c.foo(b); // prints B1
c.foo(c); // prints B1
注意:这个问题只是打印的java版本的镜像:
B1
C1
C1
如果有人能解释为什么 C# 为完全相同的 OOP 代码打印与 Java 不同的值,那就太好了!
【问题讨论】: