帮我看看这道scjp题

sha256cn 2002-03-11 03:40:30
public class Star {
Star() {
System.out.println("Star");
}

Star(String s1) {
super();
System.out.println(s1 + " is a Star");
}
Star(String s2, String s3) {
this("Mercury");
System.out.println( s2 + " and " + s3 + " are also Stars");
}
public static void main(String [] args) {
Sun sun = new Sun();
Sun sun1 = new Sun("Venus");
Sun sun2 = new Sun("Mars", "Earth");
}
}
class Sun extends Star {
public Sun() {
System.out.println("Star Wars1");
}
public Sun(String v1) {
super(v1, "Saturn");
System.out.println("Star Wars2");
}
public Sun(String v2, String v3) {
if ( v2.substring(0, v2.length()).length() > v3.length())
System.out.println("Mission to Mars");
else
System.out.println("Earth");
}
}
output:
1.Star
2.Star Wars1
3.Mercury is a Star.
4.Venus and Saturn are also Stars.
5.Star Wars2
6.Star
7.Earth
1-4还好理解,但5-7是为什么呢?望高手指点迷津,谢谢
...全文
33 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
niexq 2002-03-11
  • 打赏
  • 举报
回复
呵呵,隐式调用超类构造器!
niexq 2002-03-11
  • 打赏
  • 举报
回复
第六个Star是怎么出来的?
Luke_cn 2002-03-11
  • 打赏
  • 举报
回复
thinking in java(2nd)经典,里面在这方面讲的非常好的,但是要注意自己总结。
sha256cn 2002-03-11
  • 打赏
  • 举报
回复
THX,看来不看书不行啊,推荐几本好点的书吧,不要太浅啊
另外,怎么加分啊?
Luke_cn 2002-03-11
  • 打赏
  • 举报
回复
当子类的构造器没有显式调用超类的任何构造器,则会隐式调用超类的默认构造器。
eightlin 2002-03-11
  • 打赏
  • 举报
回复
其实这题主要考两个知识点:
1.子类没有显式调用构造函数,则隐式调用父类的默认构造函数
2.使用super()调用父类构造函数
pingju 2002-03-11
  • 打赏
  • 举报
回复
哥们,第五项 "Star Wars2" 是随着第四项也就是 初始化 sun1 的最后一条语句。执行完“super(v1, "Saturn"); "不正好执行System.out.println("Star Wars2"); 吗!


第6项,7项是初始化sun2执行的。因为sun2中没有super(""), 所以引式的调用父类star的构造函数
Star() {
System.out.println("Star");
}

因为字符串Mars的个数少于earth的个数,所以执行
else
System.out.println("Earth");
即第七项

Luke_cn 2002-03-11
  • 打赏
  • 举报
回复
当子类的构造器没有显式调用超类的任何构造器,则会隐式调用超类的默认构造器。
sha256cn 2002-03-11
  • 打赏
  • 举报
回复
to stellaxyq(汐) 等于没说啊
问题是Sun sun2 = new Sun("Mars", "Earth")为何不用public Sun(String v2, String v3)这个CONSTRUCTOR?
stellaxyq 2002-03-11
  • 打赏
  • 举报
回复
5是System.out.println("Star Wars2"); 打出来的
6是基类默认的构造方法
7是因为v2.substring(0, v2.length()).length() 小于v3.length
所以打了System.out.println("Earth");

62,615

社区成员

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

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