私は C# にまったく慣れていないので、私の質問がばかげているように聞こえる場合は、私の無知をご容赦ください。
-Inheritance
Funda をで試してみた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();
}
}
出力:
I don't make any sound
barking
ジャバコード:
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
のオブジェクト参照変数に割り当てています.onメソッドを呼び出すと、(Dogクラスのオーバーライドされたメソッド)として出力を取得する必要がありますが、代わりにメソッドとして出力を与えて呼び出されます。a
Animal
Sound()
a
barking
Animal's Sound()
I don't make any sound
-しかし、Java
物事は期待どおりに機能しています..継承はどこでも同じように機能します。
誰かが私を助けてくれるなら、私は義務付けられます...... よろしくお願いします。