Java面试经典题集:面向对象编程与Swing基础

需积分: 9 1 下载量 7 浏览量 更新于2024-09-18 1 收藏 71KB DOC 举报
1. **Java面向对象继承问题**: 在给定的Java代码示例中,类`B`继承自类`A`,并在`getNumber`方法上添加了一个新的参数`char c`。然而,由于`B`类覆盖了父类`A`的非抽象方法`getNumber`,并且没有实现父类方法的签名,即没有包含`int a`这个参数,因此编译时会报错。正确答案是A**编译错误**,因为Java不允许子类改变父类方法的签名。 2. **数组越界访问**: `MyArray`类的`main`方法中尝试访问数组`i`的第6个元素,但是数组初始化为长度为5,所以`i[5]`会抛出`ArrayIndexOutOfBoundsException`。因此,答案是A**编译出错**,因为编译阶段就能检测到数组越界异常。 3. **Java Swing JPanel默认布局管理器**: `JPanel`在Swing中默认使用的布局管理器是`BorderLayout`,它允许在面板的不同边设置不同的组件。所以正确答案是B**BorderLayout**。 4. **Thread类的start()与run()方法**: 在`Bground`类中,`main`方法创建了一个`Bground`实例并调用其`run()`方法。然而,Java的线程模型规定,`Thread`的实例应当通过`start()`方法启动,而不是直接调用`run()`方法。因此,正确答案是B**运行错误**,因为应该调用`b.start()`而非`b.run()`。 5. **Java中重写无逻辑方法的声明**: 如果父类中的某些方法没有实际逻辑,仅需要被子类覆盖,应使用`abstract`关键字声明为抽象方法,而不是`final`(禁止子类重写)、`static`(属于类,而非对象)、或`void`(不返回值)。因此,答案是C**abstract**。 6. **构造函数和包覆构造器**: 最后的问题涉及`Hope`类的包覆构造器(protected constructor)。在这个例子中,`Hope`类有一个保护级别的构造器,意味着子类可以访问它,但外部代码不能直接创建`Hope`类的对象。`main`方法试图创建`Hope`对象,但没有提供足够的信息来调用构造器。因此,这里可能有编译错误或运行错误,具体取决于编译器的处理方式。如果编译器没有强制执行包覆构造器,可能会隐式调用默认构造器,那么答案可能是C**编译通过但无输出**;如果编译器不允许,答案是A**编译错误**。 总结: 这些题目涵盖了Java编程的基础概念,包括面向对象编程的继承、数组访问、Swing的布局管理、线程模型、以及如何声明需要被子类覆盖的方法。理解这些知识点对于准备Java笔试至关重要,包括编译规则、构造函数和继承的细节。