Java编程:类与继承基础练习

需积分: 0 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编程中,理解类的结构、对象的创建、类型引用以及继承关系至关重要,这些知识点是编写高质量代码的基础。通过这样的练习,可以帮助开发者巩固和深化对这些概念的理解。