求详解

xiezhi 2004-12-09 10:50:37
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");
}
}
What is the result?

A.
1.Star Wars1
2.Mercury is a Star.
3.Venus and Saturn are also Stars.
4.Star Wars2
5.Earth

B.
1.Star
2.Star Wars1
3.Mercury is a Star.
4.Venus and Saturn are also Stars.
5.Star Wars2
6.Star
7.Mission to Mars

C.
1.Star Wars1
2.Mercury is a Star.
3.Venus and Saturn are also Stars.
4.Star Wars2
5.Earth

D.
1.Star
2.Star Wars1
3.Mercury is a Star.
4.Venus and Saturn are also Stars.
5.Star Wars2
6.Star
7.Earth

E.
1.Star
2.Star Wars1
3.Mercury is a Star.
4.Venus and Saturn are also Stars.
5.Star Wars2
6.Mission to Mars

F.
1.Star Wars1
2.Mercury is a Star.
3.Venus and Saturn are also Stars.
4.Star Wars2
5.Star
6.Earth

G.
1.Star Wars1
2.Mercury is a Star.
3.Venus and Saturn are also Stars.
4.Star Wars2
5.Star
6.Mission to Mars

H.
1.Star
2.Star Wars1
3.Mercury is a Star.
4.Venus and Saturn are also Stars.
5.Star Wars2
6.Earth

I.Compile-time error occurs.

...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiezhi 2004-12-14
  • 打赏
  • 举报
回复
答案是D
经过这两天看SL 275
我总结一下:
无参的构造函数应该是先调用父类的构造函数,于是当Sun sun = new Sun(); 的时候先调用的是super(),打印出Star Wars1
(SL 275原话)If you write a constructor that has neither a call to super(...) nor this(...),the compiler automatically inserts a call to the parent class constructor with no arguments.
即你子类构造函数没有在首行使用super(...)或this(...),则编译器会自动调用其父类无参构造函数,如果父类没有无参构造函数,则 throw a compiler error result
于是当Sun sun2 = new Sun("Mars", "Earth"); 时,编译器先用super()调用父类无参构造函数star()打印出Star
所以选D是显然的了!
redex 2004-12-10
  • 打赏
  • 举报
回复
实际上答案是D.
classjava 2004-12-10
  • 打赏
  • 举报
回复

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(); //调用Star()构造函数先
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");
}
}
都是一些构造函数调用问题,题意是为了测试子类调用父类无参构造函数
yushui719 2004-12-10
  • 打赏
  • 举报
回复
调用父类的构造函数
xiezhi 2004-12-10
  • 打赏
  • 举报
回复
请问
Star(String s1) {
super();
System.out.println(s1 + " is a Star");
}
中的super ()是调用什么,Object么?
xiezhi 2004-12-10
  • 打赏
  • 举报
回复
答案是D,请解释下道理!
xiezhi 2004-12-10
  • 打赏
  • 举报
回复
经楼上诸位的指点基本上能看出个大概了。
但这样的话似乎应该选H,但答案是D
zh_baiyu 2004-12-09
  • 打赏
  • 举报
回复
无参的构造函数应该是先调用父类的构造函数。

有参的应该要super()才会调用。所以······
zh_baiyu 2004-12-09
  • 打赏
  • 举报
回复
看了一下,答案应该是H···

vgvg 2004-12-09
  • 打赏
  • 举报
回复
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");
}
}
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");
}

public static void main(String [] args) {
Sun sun = new Sun();
Sun sun1 = new Sun("Venus");
Sun sun2 = new Sun("Mars", "Earth");
}


}
这样应该能看懂了把?
redex 2004-12-09
  • 打赏
  • 举报
回复
D

50,535

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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