JAVA实验_题目8
- 格式:doc
- 大小:85.00 KB
- 文档页数:9
第八章类和对象的扩展
【实验目的】
(1) 类的继承
a. 掌握父类及子类的关系及创建方法
b. 掌握上转型对象的使用方法
c. 掌握子类对象创建过程中与父类构造方法的关系,及super关键字的用法
(2) 多态与接口
a. 掌握抽象类与抽象方法的概念
b. 掌握多态的实现原理及方法
c. 了解成员变量的隐藏
d. 掌握接口的设计方法
【实验范例】
例1:(继承)
(1)编写一个圆类Circle,该类拥有:
①一个成员变量
Radius(私有,浮点型);// 存放圆的半径;
②两个构造方法
Circle( ) // 将半径设为0
Circle(double r )//创建Circle对象时将半径初始化为r
③三个成员方法double getArea( ) //获取圆的面积
double getPerimeter( ) //获取圆的周长
void show( ) //将圆的半径、周长、面积输出到屏幕
(2)编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:
①一个成员变量
double hight(私有,浮点型);// 圆柱体的高;
②构造方法
Cylinder (double r, double h ) //创建Circle对象时将半径初始化为r
③成员方法
double getVolume( ) //获取圆柱体的体积
void showVolume( ) //将圆柱体的体积输出到屏幕
编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
程序代码:
class Circle { // 定义父类--园类
private double radius; // 成员变量--园半径
Circle() { // 构造方法
radius = 0.0;
}
Circle(double r) { // 构造方法
radius = r;
}
double getPerimeter() { // 成员方法--求园周长
return 2 * Math.PI * radius;
}
double getArea() { // 成员方法--求园面积
return Math.PI * radius * radius;
}
void disp() { // 成员方法--显示园半径、周长、面积
System.out.println("圆半径=" + radius);
System.out.println("圆周长=" + getPerimeter());
System.out.println("圆面积=" + getArea());
}
}
class Cylinder extends Circle { // 定义子类--圆柱类
private double hight; // 成员变量--园柱高
Cylinder(double r, double h) { // 构造方法
super(r);
hight = h;
}
public double getVol() { // 成员方法--求园柱体积
return getArea() * hight;
}
public void dispVol() { // 成员方法--显示园柱体积
System.out.println("圆柱体积=" + getVol());
}
}
public class Prog1 { // 定义主类
public static void main(String[] args) { // 主程入口
Circle Ci = new Circle(10.0); // 生成园类实例
Ci.disp(); // 调用园类的方法
Cylinder Cyl = new Cylinder(5.0, 10.0); // 生成圆柱类实例
Cyl.disp(); // 调用父类方法
Cyl.dispVol(); // 调用子类方法
}
}
例2:(重载)
设计一个汽车类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。
程序代码:
class Multiplication {
public void mul(int a, int b) {
int m = a * b;
System.out.println(a + "*" + b + "=" + m);
}
public void mul(double a, double b) {
float m = (float) (a * b);
System.out.println(a + "*" + b + "=" + m);
}
public void mul(double a, double b, double c) {
double m = a * b * c;
System.out.println(a + "*" + b + "*" + c + "=" + m);
}
}
public class Prog1 {
public static void main(String[] args) {
Multiplication test = new Multiplication();
test.mul(3, 4);
test.mul(2.3, 3);
test.mul(3, 4, 5);
}
}
例3:(接口与多态)
(1) 定义一个接口CanFly,描述会飞的方法public void fly();
(2) 分别定义类飞机和鸟,实现CanFly接口。
(3) 定义一个测试类,测试飞机和鸟。测试类中定义一个makeFly()方法,让会飞的事物飞起来。
(4) 然后在main方法中创建飞机对象和鸟对象,并在main方法中调用makeFly()方法,让飞机和鸟起飞。
程序代码:
interface CanFly {
public void fly();
}
class AirPlane implements CanFly {
public void fly() {
System.out.println("airplane is flying");
}
}
class Bird implements CanFly {
public void fly() {
System.out.println("Bird is flying");
}
}