一个java基础笔试题

xiaoxunbiao2009 2017-09-07 05:27:07
有个笔试题,看了好久,没想明白,为什么是这个结果(主要是1为什么先打印出来)
21.下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果(d )
class People {
String name;
public People() { System.out.print(1); }
public People(String name) {
System.out.print(2);
this.name = name;
}
}
class Child extends People {
People father;
public Child(String name) {
System.out.print(3);
this.name = name;
father = new People(name + ":F");
}
public Child(){ System.out.print(4); }
}
A、312 B、32
C、432 D、132
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
soton_dolphin 2017-09-07
  • 打赏
  • 举报
回复
引用 4 楼 xiaoxunbiao2009 的回复:
[quote=引用 3 楼 soton_dolphin 的回复:] public Child(String name) { super(); System.out.print(3); this.name = name; father = new People(name + ":F"); }
构造器的调用我知道是在创建对象时调用的,此时是new子类对象,如果是调用了super(),那意味这父类也new了一个对象?(对这一点理解不清楚,所以问下。)[/quote] 没有创建父类的实例,只是用来初始化实例的变量。你可以这样写: public Child(String name) { super(name); System.out.print(3); father = new People(name + ":F");
xiaoxunbiao2009 2017-09-07
  • 打赏
  • 举报
回复
引用 3 楼 soton_dolphin 的回复:
public Child(String name) { super(); System.out.print(3); this.name = name; father = new People(name + ":F"); }
构造器的调用我知道是在创建对象时调用的,此时是new子类对象,如果是调用了super(),那意味这父类也new了一个对象?(对这一点理解不清楚,所以问下。)
soton_dolphin 2017-09-07
  • 打赏
  • 举报
回复
public Child(String name) { super(); System.out.print(3); this.name = name; father = new People(name + ":F"); }
soton_dolphin 2017-09-07
  • 打赏
  • 举报
回复

public Child(String name) {
             super();
              System.out.print(3);
              this.name = name;
              father = new People(name + ":F");
       }
soton_dolphin 2017-09-07
  • 打赏
  • 举报
回复
先调用父类的构造器啊

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧