我对 C# 很陌生,所以我希望如果我的问题听起来很愚蠢,请原谅我的无知。
-我正在尝试Inheritance
使用 FundaC#
并发现它的行为方式有些奇怪,所以我想用 来检查它Java
,我得到了预期的结果。
-我只想知道这里有什么我想念的......
C#代码:
class Animal
{
public void Sound()
{
System.Console.WriteLine("I don't make any sound");
}
}
class Dog : Animal
{
public void Sound()
{
System.Console.WriteLine("barking");
}
}
class InheritTest
{
static void Main()
{
Animal a = new Dog(); // Implicit conversion
Dog d = (Dog) a; // Explicit conversion
a.Sound();
d.Sound();
}
}
输出 :
I don't make any sound
barking
JAVA代码:
class Animal
{
public void sound()
{
System.out.println("I don't make any sound");
}
}
class Dog extends Animal
{
public void sound()
{
System.out.println("barking");
}
}
class InheritTest
{
public static void main(String[] args)
{
Animal a = new Dog(); // Implicit conversion
Dog d = (Dog) a; // Explicit conversion
a.sound();
d.sound();
}
}
输出 :
barking
barking
-现在我对这一整集的怀疑是..在C#
我分配给类型Dog object
的对象引用变量时,然后当我调用方法时,我应该得到输出(这是 Dog 类中的重写方法),而是方法称为将输出作为。a
Animal
Sound()
a
barking
Animal's Sound()
I don't make any sound
-但是Java
事情按预期工作..继承在任何地方都以相同的方式工作,所以我哪里出错了。
如果有人可以帮助我,我将不胜感激......在此先感谢。