メソッドを使用して抽象スーパークラス Aninal とサブクラス Dog を使用しているこのコードで問題に直面していますが、有効なオーバーロードをテストし、ここで「a.print(d);」の行をオーバーライドしようとすると、私には明確ではありません。参照 Dog を使用して dog print メソッドを呼び出す必要がありますが、参照 Animal を使用して呼び出します。
public class TestOverload {
public static void main(String[] args) {
Animal a = new Dog();
a.print(a); // DOG class print method is invoked
Dog d = new Dog();
d.print(d);// DOG class print method is invoked
a.print(d);// PROBLEM ::: it should invoke DOG print method with reference
DOG but its invoking 1 with reference Animal
}
}
abstract class Animal {
public abstract void print(Animal a);
}
class Dog extends Animal {
public void print(Dog d) {
System.out.println(" Dog ");
}
public void print(Animal a) {
System.out.println("Animal ");
}
}
誰でもこれで私をクリアできますか