Java程序设计精编教程(6.11上机实践)

实验目的

让学生掌握上转型对象的使用,理解不同对象的上转型对象调用同一方法可能产生不同的行为,即理解上转型对象在调用方法时可能具有多种形态(多态)

实验要求

  1. 编写一个abstract的类,类名Geometry,该类有一个abstract方法
  2. 编写Geometry的若干子类
  3. 编写Student类,定义一个方法,该方法参数可变,但类型都是Geometry
  4. 在主类main方法创建一个Student对象,让对象调用3中的方法计算若干矩形和若干圆形的面积之和。

程序代码

Geometry.java

public abstract class Geometry {
	public abstract double getArea();
}

Rect.java

public class Rect extends Geometry{
	double a,b;
	Rect(double a,double b){
		this.a = a;
		this.b = b;
	}
	//重写getArea()方法,返回矩形面积
	public  double getArea() {
		return a*b;
	}
}

Circle.java

public class Circle extends Geometry{
	double r;
	Circle(double r){
		this.r = r;
	}
	//重写getArea()方法,返回圆面积
	public  double getArea() {
		return Math.PI*r*r;
	}
}

Student.java

public class Student extends People {
	public double area(Geometry...p) {
		double sum = 0;
		for (int i = 0; i < p.length; i++) {
			sum = sum + p[i].getArea();
		}
		return sum;
	}
}

MainClass.java

public class MainClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student zhang = new Student();
		double area = 
				zhang.area(new Rect(2,3),
						new Circle(5.2),new Circle(12));
		System.out.printf("2个圆和1个矩形图形的面积和:\n%10.3f",area);
	}
}

运行结果:

posted @ 2022-05-13 23:33  七色彩虹k  阅读(1049)  评论(0)    收藏  举报