Kum*_*tra 0 c# java inheritance implicit-conversion explicit-conversion
我对C#很新,所以我希望如果我的问题听起来很愚蠢请原谅我的无知.
-我尝试Inheritance用丰达C#,发现它在一些奇怪的行为方式,所以我想用检查出来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();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
I don't make any sound
barking
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
barking
barking
Run Code Online (Sandbox Code Playgroud)
-现在我对这整集的疑问是..在C#我分配Dog object到a类型的对象引用变量中Animal,然后当我调用方法Sound()时a,我应该得到输出为barking(这是Dog类中的重写方法)而是Animal's Sound()方法被称为输出为I don't make any sound.
-但Java事情正在按预期工作.继承在任何地方的工作方式都是一样的,所以我哪里出错了.
如果有人可以帮我解决,我将不得不......提前致谢.