Java继承与多态练习解析

版权申诉
0 下载量 46 浏览量 更新于2024-06-28 收藏 822KB PDF 举报
"JAVA基础第4章继承与多态-练习题 (2).pdf" 在Java编程语言中,继承和多态是面向对象编程的两个核心概念。本章练习题主要考察了这两个概念以及相关的包管理和类的使用。 1. 题目中的第一个例子涉及包管理。`P1`类位于`MyPackage`包中,而`P2`类位于`YourPackage`包,并且继承自`P1`。要正确地编译和运行`P2`,需要导入`MyPackage`包。因此,只有当`P2`正确导入了`MyPackage`后才能编译通过。由于`P2`没有定义任何方法或变量,所以运行时不会有任何输出。选项D正确,`P1`会通过编译,但`P2`会出现编译错误,因为它需要导入`P1`所在的包。 2. 第二个程序中,`D`类位于两个不同的包下,但是没有看到主方法`main`。在Java中,程序的入口点必须是包含`main`方法的类。因此,这个程序无法编译,选项A正确。 3. Java的核心类库中,`java.lang`包是默认被引入的,这意味着在每个Java程序中,无需显式导入就可以使用该包中的类,如`String`、`System`等。选项B正确。 4. 第四个程序展示了访问权限和构造器。`Base`类有一个私有的构造器,这意味着它不能在外部直接实例化。同时,`Base`类中的`i`也是私有的,无法从子类`Pri`中访问。因此,尝试创建`P2`对象并调用`afancymethod()`会导致编译错误,选项A正确。 5. 最后一个程序中,`Base`类有一个构造器,会在实例化时打印`100`。`Pri`类继承自`Base`,并且定义了一个静态变量`i`。在`main`方法中,先创建了`Base`的实例,会打印`100`,然后创建了`Pri`的实例,但没有调用任何方法或访问变量`i`,所以不会打印`200`。因此,程序的输出是`100`,选项C正确。 通过这些题目,我们可以看到,理解Java的包管理、类的继承、访问控制以及构造器的工作原理对于编写有效的Java代码至关重要。在实际编程中,这些概念不仅涉及到代码的组织结构,还直接影响到代码的可读性、可维护性和功能实现。学习和掌握这些基础知识是成为熟练Java程序员的基础。