一、实验目的
本实验为Java课程的第二次实验,其主要目的如下:
-
理解继承和多态的概念;
-
掌握域和方法在继承中的特点;
-
掌握构造函数的继承和重载;
-
掌握this和super的用法;
二、实验原理
继承性是面向对象编程技术的最重要的基础概念之一。在面向对象的程序设计中,类的继承性允许创建分等级层次的类。在Java编程中,类可以继承另一个类,这个类除了创建自己的成员外,还能够继承或扩展另一个类的成员。在这个继承关系中,被继承的类叫超类(Super class)或基类(Base class)、父类(Parent class),继承的类叫继承类(Derived class)或子类(Sub class)。因此,子类是对超类的一种扩展,它可以继承超类定义的成员变量和方法,也可以隐藏或覆盖超类的成员变量和方法,并且它也有自己的成员变量和方法。
对象通过类可以实现封装,通过子类可以实现继承。例如,对于各种用途的汽车,它们都具备汽车的共性,但是,它们各自还有着自身的特点,这些特点是由汽车的子类实现。
子类继承了超类的所有变量和方法,同时又有了自身的变量和方法。通过超类和子类构成类的层次。类的层次可以从最基本的类开始,创建一系列的子类来逐步特殊化。同时通过继承实现代码重用,减少程序的复杂性。在Java语言中,类只支持单一继承,接口可以实现多重继承。
在Java语言中,所有的类都是通过直接或间接地继承java.lang.Object类。子类继承了超类的状态和行动,同时又可以修改超类的状态或覆盖超类的行动,并添加新的状态和行动。
三、实验内容
简要说明实验内容:
设计一个求立方体体积的父类,包含一个显示底面各个形状信息的统一方法,信息显示方式 “类别+周长+面积”;一个计算和显示立方体体积的统一方法
设计三个子类(利用继承关系):圆柱、长方体、三棱柱,包含参数设置方法、底面周长计算方法、底面面积计算方法。
设计一个测试类,用以下信息进行设置:
高相同,底部形状不同(h=10);
一个圆形(Circle)(r=4);
一个矩形(Rectangle)(长:4,宽:3);
一个三角形(Triangle)(三个边长都为6);
输出底面信息和体积。
步骤:
-
新建一个Java工程,命名为TestVolume;
-
新建和实现五个Java类:Volume、Cylinder、Cuboid、Prism、Test;
-
编译、调试并运行程序,观察输出结果是否正确;
四、实验过程及结果
了解完要做的事情后,就要开始写代码。严格按照实验任务写出来的代码是:
Volume.java
package TestVolume;
public abstract class Volume {
double h=2,S,C;
public abstract void calculate();
public abstract void show();
}
Cylinder.java
package TestVolume;
import static java.lang.Math.PI;
public class Cylinder extends Volume {
double r;
static String lei=