会拳击的袋鼠 2021-07-02 19:44 采纳率: 100%
浏览 60
已采纳

为啥第一个输出是0啊,迷惑啊

以下程序的输出结果是什么()

public class SubCls extends SuperCls {
int a = 6;

public SubCls(){
    test();

}
public void  test(){

    System.out.println(a);}
public static void main(String[] args) {
    new SubCls();

}}

class SuperCls{
int a = 8;

public SuperCls(){
    test();

}
public void  test(){
    System.out.println(a);

}

}

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-07-02 20:38
    关注

    理解一下,基类构造先调用,test调用的是子类的test,输出a,单此时子类构造尚未执行,a还是0。好吧,只能这么理解。你在两个test中在输出点别的,可以测试一下调用关系

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?