首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCAJP实践测试

OCAJP实践测试
EN

Stack Overflow用户
提问于 2016-01-05 12:45:16
回答 2查看 109关注 0票数 0

请看下面的代码:

代码语言:javascript
复制
public class Baap {
    public int h = 4;

    public int geth() {
        System.out.println("Baap" + h);
        return h;
    }
}

public class Beta extends Baap {
    public int h = 44;

    public int geth() {
        System.out.println("Beta" + h);
        return h;
    }

    public static void main(String[] args) {
        Baap b = new Beta();
        System.out.println(b.h + "," + b.geth());
        Baap bb = (Beta) b;
        System.out.println(bb.h + "," + bb.geth());
    }
}

此代码的输出为

代码语言:javascript
复制
Beta44 
4,44 
Beta44 
4,44 

我不明白输出的顺序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-05 12:59:08

System.out.println(b.h + "," + b.geth());

在这个打印结果,它需要评估什么是b.geth()。因此,最终打印的是Beta44,然后是4,44

类似的事情也发生在语句上:System.out.println(bb.h + "," + bb.geth());

票数 2
EN

Stack Overflow用户

发布于 2017-01-24 09:30:00

它首先计算println()语句中的表达式,因为Beta44首先被打印出来。然后从左到右开始打印println语句中的值,然后打印4,44。它打印4,因为实例变量是Baap类型的。因此,它选择在Baap类中定义的变量的值。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34612063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档