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 @   七色彩虹k  阅读(1010)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示