当前位置: 首页 > 知识库问答 >
问题:

我不明白这一系列代码中的编译顺序[重复]

广乐邦
2023-03-14

我很难理解为什么在标有“////1”的行,程序将返回62而不是34。有人能一步一步解释吗?我是java中的beeginer,我正在努力理解执行的顺序。

class X {
        public void proc(X p){
            System.out.println(12);
        }
}

class Y extends X{
    public void proc(X p){
        System.out.println(62);
    }
}

class Z extends Y{
    public void proc(Z p){
        System.out.println(34);
    }
}

class Main4{
    public static void main(String[] args){
        X x = new Z();
        Y y = new Z();
        Z z = new Z();
        x.proc(z);////1
    }
}

任何帮助都会很棒!谢谢!

共有1个答案

璩涵衍
2023-03-14

x.proc(z)在编译时从X类型(即X)中的方法中选择。唯一可用的方法是proc(X)

还要记住,Z中的public void proc(zp)不会重写public void proc(xp)

 类似资料: