`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方法啊。

    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作