在Java中解决Polymorhism类的正确方法?

时间:2017-03-03 18:28:50

标签: java class polymorphism

这是我无法弄清楚的功课问题。

找到输出:

    public static void main(String[] args) {
        Object o = new A();
        A a2 = new B();
        B b = new B();
        a2.report(b);
    }

public class A {
    public void report(Object o) {
        System.out.println("Object");
    }

    public void report(A a) {
        System.out.println("A");
    }
}

public class B extends A {
    public void report(A a) {
        System.out.println("A again");
    }

    public void report(B b) {
        System.out.println("B");
    }
}

当我尝试使用该解决方案时,我首先尝试弄清楚在编译时会发生什么。我认为a2会使用A类并报告未在A类中定义的b,因此默认为报告对象。这将给出" Object"的解决方案。但是,这是不正确的。我无法弄清楚这种方法如何报告" A"当函数应该是调用报告(B b)。

0 个答案:

没有答案