java 创建子类对象时调用的顺序?为什么第一次输出的 i 是 0?

问答 陈立贵 ⋅ 于 2019-07-17 18:05:03 ⋅ 最后回复由 青牛 2019-07-18 16:57:38 ⋅ 1424 阅读

package test;

public abstract class UseCase1 {

abstract void testAbstract();

UseCase1(){//(1)首先执行父类构造方法

System.out.println("before testAbstract()");

testAbstract();//如果调用了抽象方法,调用子类覆盖的方法。这里调用Atest类的testAbstract()方法

System.out.println("after testAbstarcat()");

}

public static void main(String args[]){

new Atest();

}

}

class Atest extends UseCase1{

private int i=3;//(2)使成员变量进行初始化

void testAbstract(){

System.out.println("testAbstract()"+i);

}

public Atest(){//(3)调用子类构造方法

System.out.println(i);

}

}
file

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2019-07-18 16:57:38

    问题在 private int i=3;
    这个私有化的成员变量只能在子类的方法中调用

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter