我在这段代码中遇到了一个问题,我有抽象超类 Aninal 和 Subclass 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 ");
}
}
谁能帮我解决这个问题