Java测试(初级)

标签 java

我在带有测试的 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的默认构造函数(因为AlphaBase的子类>),打印“Base”。然后,new Base() 也调用该构造函数并再次打印“Base”,最终输出为“BaseBase”。

关于Java测试(初级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083928/

相关文章:

java - 使用 Java Servlet 读取和写入以太网端口的替代方案

java - 已由调度程序转发 - 通过调度程序作者的代理访问作者

Java、Oracle db - trunc(nvl) 从日期时间对象中删除时间戳后出现时区问题

java - 为什么 VM 线程会减慢我的 Web 应用程序的速度?

java - 如何在 Java Swing 中从另一个组件接收事件/将事件转发到另一个组件

java - 使用 Xuggler 时提高 Theora 的视觉质量

java - Java 应用程序可以在 LibreOffice 中创建报告吗?

java - 如何在 Android 设备中从 Firestore 获取服务器时间戳?

java - 全局变量让我为空

Java复制覆盖文件,读取时获取旧文件