Java面向对象编程笔试陷阱与答案解析

13 下载量 80 浏览量 更新于2024-08-02 收藏 81KB DOC 举报
1. 题目涉及面向对象编程的基础概念和继承:在第一个题目中,类`B`继承了类`A`,并且重写了`getNumber`方法。然而,子类的方法参数列表与父类不同(`int a`和`char c`),这会导致编译错误,因为子类的方法签名必须与父类一致或兼容。因此,正确答案是A)编译错误。 2. 在第二个例子中,数组初始化后尝试访问超出索引范围的元素`i[5]`,这在Java中会抛出`ArrayIndexOutOfBoundsException`。因此,编译无误但运行时会报错,答案是B)运行错误。 3. 在Java Swing中,JPanel的默认布局管理器是`BorderLayout`,因为它允许组件按照边框进行布局,这是Swing中最常用的一种布局方式。因此,正确答案是B)BorderLayout。 4. 第四个问题涉及到线程的使用。`Bground`类试图继承`Thread`并重写`run()`方法,但在`main`方法中直接创建`Bground`实例并调用`run()`。实际上,`Thread`的实例化应在`run()`方法中完成,因为`start()`方法会调用`run()`。所以这里的问题是调用了`run()`方法而不是`start()`,程序会编译并运行,但不会启动新线程,因此答案是C)编译通过但无输出。 5. 关于方法重写,如果父类的某些方法没有实际逻辑,仅仅是为了被子类覆盖,应使用`abstract`关键字声明为抽象方法,让子类提供实现。答案是C)abstract。 6. 最后一个问题考察了构造函数的访问权限。`Hope`类有一个`protected`的构造函数,这意味着它只能在同一个包或者其子类中被访问。在`main`方法中直接实例化`Hope`类会调用默认的无参构造,而不会调用`protected`构造。因此,这里没有错误,程序编译并通过,输出将是无意义的,答案可能是空的,但根据提供的选项,没有直接对应的答案,可能需要根据实际情况判断输出的细节。 总结,这些题目主要考察了面向对象编程的基本原则,包括继承、方法重写、数组操作、线程和构造函数的理解。理解和正确运用这些概念是解决这类面试题的关键。