【发布时间】:2013-06-02 09:32:08
【问题描述】:
我有两个类 A 和 B,其中 B 派生自 A。
两个类都有一个签名相同的方法。它们在Java & c#-->
中以如下方式调用在 JAVA 的情况下:
class A
{
public void print()
{
System.out.println("Inside Parent");
}
}
class B extends A
{
public void print()
{
System.out.println("Inside Child");
}
}
class test4
{
public static void main(String args[])
{
B b1=new B();
b1.print();
A a1=new B();
a1.print();
}
}
此程序生成以下输出:-
Inside Child
Inside Child
如果是 C#:
class A
{
public void print()
{
System.Console.WriteLine("Inside Parent");
}
}
class B : A
{
public void print()
{
System.Console.WriteLine("Inside Child");
}
}
class Program
{
public static void Main(string[] args)
{
B b1=new B();
b1.print();
A a1=new B();
a1.print();
System.Console.Read();
}
}
此程序生成以下输出:-
Inside Child
Inside Parent
为什么输出不同?
【问题讨论】:
-
我认为你的 C# 代码会在不使用关键字
new或关键字virtual / override的情况下覆盖父类中的方法生成编译器警告。