这里, 第17行, 这里会有一句super(); 调用父类的构造方法, 如果你不写, 由虚拟机加载, 所以第一个结果是 B, 因为调用了父类的构造方法
第18行, 程序执行这一句, 所以第二个结果是C
第19行, 这里你把5赋值给 i ,不管以前 i 是多少, 你给 i 赋值为5, 那答案自然就是 5 的啊, 如果你把这句注释掉的话, 答案就是 2 的哦
第24行, 这句没有意义, 因为没有被操作
- class Super {
- int i = 0;
- public Super(String a) {
- System.out.println("A");
- i = 1;
- }
- public Super() {
- System.out.println("B");
- i += 2;
- }
- }
- class Demo extends Super {
- public Demo(String a) {
- // super(); 调用父类的构造方法, 如果你不写, 由虚拟机加载, 所以第一个结果是 B
- System.out.println("C");// 程序执行这一句, 所以第二个结果是C
- i = 5;// 这里你把5赋值给 i ,不管以前 i 是多少, 你给 i 赋值为5, 那答案自然就是 5 的啊, 如果你把这句注释掉的话,
- // 答案就是 2 的哦
- }
- public static void main(String[] args) {
- int i = 4;// 这句没有意义, 因为没有被操作
- // 创建Demo实例对象
- Super d = new Demo("A");
- System.out.println(d.i);
- }
- }// 结过怎么不是2是5?【正解】B C 5
复制代码 |