Java 继承与 C# 继承
2022-09-03 13:22:27
假设Java有这些分层类:
class A
{
}
class B extends A
{
public void m()
{
System.out.println("B\n");
}
}
class C extends B
{
public void m()
{
System.out.println("C\n");
}
}
class D extends C
{
public static void main(String[] args)
{
A a = new D();
// a.m(); // doesn't work
B b = new D();
b.m();
C c = new D();
c.m();
D d = new D();
d.m();
}
}
这是 C# 中相同代码的(盲)重复:
using System;
class A
{
}
class B : A
{
public void M()
{
Console.WriteLine("B");
}
}
class C : B
{
public void M() // I need to use public new void M() to avoid the warning
{
Console.WriteLine("C");
}
}
class D : C
{
public static void Main(String[] args)
{
A a = new D();
// a.M(); // doesn't work
B b = new D();
b.M();
C c = new D();
c.M();
D d = new D();
d.M();
}
}
当我执行Java代码时,我得到了,而C#返回.C-C-C
B-C-C
对我来说,C#的结果更有意义,因为引用B调用了自己的方法。
- Java设计人员决定打印而不是打印背后的逻辑是什么?我的意思是,为什么引用B在C中使用重写方法?这种方法的优势是什么?
C-C-C
B-C-C
- 如何像 C# 一样将 Java 代码更改为打印出来?我的意思是,我怎么能教java调用它使用的确切引用的方法?
B-C-C
- 如何更改C#代码以打印出来?我的意思是,如何教C#调用重写方法?
C-C-C