我在带有测试的 java 书中看到这个程序,但我不明白为什么这是正确答案:
程序的输出是什么?
class Base
{
Base()
{
System.out.print("Base");
}
}
public class Alpha extends Base
{
public static void main(String[] args)
{
new Alpha(); /* Line 12 */
new Base(); /* Line 13 */
}
}
所有答案:
- A.基地
- B.BaseBase
- C.编译失败
- D.代码运行时没有 输出
正确答案是BaseBase
。
最佳答案
当你第一次调用new Alpha()
时,你调用了Alpha
的默认构造函数。由于未明确声明,因此隐式定义为:
public Alpha() {
super();
}
因此,new Alpha()
调用了Base
的默认构造函数(因为Alpha
是Base
的子类>),打印“Base”。然后,new Base()
也调用该构造函数并再次打印“Base”,最终输出为“BaseBase”。
关于Java测试(初级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083928/