C#多态 与 java多态到底相同么?

hanxu CSDN会员 hanxu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下面是csdn java板块的一个热帖:
写出以下代码的输出结果

class A{
public String f(D obj){return ("A and D");}
public String f(A obj){return ("A and A");}
}
class B extends A{
public String f(B obj){return ("B and B");}
public String f(A obj){return ("B and A");}
}
class C extends B{}
class D extends B{}

class test{
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.f(b)); A and A
System.out.println(a1.f(c)); A and A
System.out.println(a1.f(d)); A and D
System.out.println(a2.f(b)); B and A
System.out.println(a2.f(c)); B and A
System.out.println(a2.f(d)); A and D
System.out.println(b.f(b)); B and B
System.out.println(b.f(c)); B and B
System.out.println(b.f(d)); A and D
}

我把这个例子改写成了C#的 代码如下:
class test
{




static void Main(string[] args)
{
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
Console.WriteLine(a1.f(b)); // A and A
Console.WriteLine(a1.f(c)); // A and A
Console.WriteLine(a1.f(d)); // A and D
Console.WriteLine(a2.f(b)); // A and A
Console.WriteLine(a2.f(c)); // A and A
Console.WriteLine(a2.f(d)); // A and D
Console.WriteLine(b.f(b)); // B and B
Console.WriteLine(b.f(c)); // B and B
Console.WriteLine(b.f(d)); // B and B

}

}

class A
{
public String f(D obj) { return ("A and D"); }
public String f(A obj) { return ("A and A"); }
}
class B : A
{
public String f(B obj) { return ("B and B"); }
public String f(A obj) { return ("B and A"); }
}
class C : B { }
class D : B { }

屏幕输出语句后面的是输出结果,发现java和C#版的输入结果不完全相同,想知道原因?谢谢赐教
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
hanxu CSDN会员
C# 111,129 成员 642,538 内容