gpt4 book ai didi

java - 运行类测试的输出是什么? (Java,抽象类)

转载 作者:行者123 更新时间:2023-12-01 21:49:22 25 4
gpt4 key购买 nike

public class Test {
public static void main(String[] args) {
new Circle9();
}
}

public abstract class GeometricObject {
protected GeometricObject() {
System.out.print("A");
}

protected GeometricObject(String color, boolean filled) {
System.out.print("B");
}
}
public class Circle9 extends GeometricObject {
/** Default constructor */
public Circle9() {
this(1.0);
System.out.print("C");
}

/** Construct circle with a specified radius */
public Circle9(double radius) {
this(radius, "white", false);
System.out.print("D");
}

/** Construct a circle with specified radius, filled, and color */
public Circle9(double radius, String color, boolean filled) {
super(color, filled);
System.out.print("E");
}
}

A. ABCD

B. BACD

C. CBAE

D.商业发展中心

正确答案是 BEDC 但我不明白如何做。在Circle9类的构造函数中,不应该有一个隐含的无参数调用super()意味着前面应该有一个A吗?

最佳答案

看看您正在调用什么以及按什么顺序:

我们来玩替换小游戏吧,您正在调用 new Circle9(); ,它变成

 this(1.0);
System.out.print("C");

this(1.0) 是 Circle9 类中的另一个构造函数,因此我们可以将其替换为:

this(radius, "white", false);
System.out.print("D");
System.out.print("C");

this(radius, "white", false); 与上面相同,它是另一个构造函数,在我们替换此调用后,我们有

super(color, filled);
System.out.print("E");
System.out.print("D");
System.out.print("C");

这个 super(color,filled); 是对父类(super class)构造函数的显式调用,所以在我们替换代码之后,我们有

super();
System.out.print("B");
System.out.print("E");
System.out.print("D");
System.out.print("C");

super() 是对 Object 类的构造函数的隐藏调用,并且 print 语句生成输出 BEDC

希望对你有帮助

关于java - 运行类测试的输出是什么? (Java,抽象类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35438297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com