Java编程:类与继承基础练习
需积分: 0 100 浏览量
更新于2024-08-04
收藏 33KB DOCX 举报
"该资源是一份关于编程基础知识的练习题,主要涉及类和对象的概念,以及类的继承关系。题目包含填空题,考察了Java中的类引用、类的实例化、获取对象类信息的方法,以及对泛型和类层次的理解。"
在Java编程语言中,类是创建对象的蓝图,而对象则是类的实例。题目中给出了三个类的定义:`GeometricObject`作为基类,`PolyGon`继承自`GeometricObject`,而`Rectangle`进一步继承自`PolyGon`。这展示了Java中的继承机制,使得`Rectangle`可以继承`PolyGon`和`GeometricObject`的属性和方法。
1. 语句`Class clz = null;`表示定义了一个名为`clz`的类引用变量,但目前它尚未指向任何具体的类信息。
2. 题目中创建了一个`GeometricObject`类型的对象`o`,但实际上它是`Rectangle`类的实例,因为`o`被初始化为`new Rectangle()`。通过`o.getClass()`可以获得`o`对象的实际类信息,即`Rectangle`类。
(1) 要声明一个指向`PolyGon`及其子类的类型信息的引用变量`clz`,应该使用如下语句:
```java
Class<? extends PolyGon> clz = null;
```
这样的声明允许`clz`引用`PolyGon`或任何继承自`PolyGon`的类的类型信息。
(2)`System.out.println(o.getClass().getSimpleName());`的输出结果将是`Rectangle`,因为`o`实际上是一个`Rectangle`对象。
3. 接下来的部分是关于使用`Class`对象的练习,涉及到泛型和类的静态成员`Class`。题目给出了五个语句,并要求指出错误的原因:
(1) `Class<PolyGon> clz3 = null; clz3 = PolyGon.class;` 是正确的,因为`clz3`被声明为`PolyGon`类型的`Class`对象,可以赋值为`PolyGon.class`。
(2) `clz3 = Rectangle.class;` 错误,因为`clz3`被声明为`PolyGon`类型,不能赋值为`Rectangle.class`,尽管`Rectangle`是`PolyGon`的子类,但类型不匹配。
(3) `Class<? extends PolyGon> clz4 = null; clz4 = GeometricObject.class;` 错误,因为`GeometricObject`不是`PolyGon`的子类。
(4) `clz4 = PolyGon.class;` 是正确的,因为`clz4`可以引用任何`PolyGon`或其子类的`Class`对象。
(5) `clz4 = Rectangle.class;` 是正确的,因为`Rectangle`是`PolyGon`的子类。
因此,错误的语句是(2)和(3),错误原因分别是类型不匹配和父类与子类的关系不正确。
4. 由于没有给出其余的语句,我们无法直接分析哪些是错误的。通常,错误可能出现在类的实例化、方法调用、类型转换或其他语法错误等方面。
在Java编程中,理解类的结构、对象的创建、类型引用以及继承关系至关重要,这些知识点是编写高质量代码的基础。通过这样的练习,可以帮助开发者巩固和深化对这些概念的理解。
2021-09-19 上传
2022-11-16 上传
2023-07-24 上传
2023-11-17 上传
2023-05-30 上传
2023-05-27 上传
2023-11-30 上传
2023-08-30 上传
2023-05-25 上传
战神哥
- 粉丝: 341
- 资源: 325
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦