`Unstoppable ` 2020-03-03 11:13 采纳率: 0%
浏览 129

向上转型中调用应该时基类还是子类的问题

package main;


public class main {

    static class A{
        public void play() {
            System.out.println("A");
        }
    }

    static class B extends A{
        public void play() {
            System.out.println("B");
        }

    }

    public static void tune(A i) {
        i.play();
    }

    public static void main(String[] args) {
        B b = new B();
        tune(b);
    }

}

b向上转型之后为基类A,那么应该调用的是A类中的play方法,但是程序输出的确是B,这是为什么?

  • 写回答

2条回答

  • HowKeyond 2020-03-03 11:31
    关注

    兄弟,你继承这一章没理解好,B类继承了A,B类重载了A类的play方法,所以B类的实例调用的就必然是B类的play方法啊。

    评论

报告相同问题?