Java程序设计精编教程(6.11上机实践)
实验目的
让学生掌握上转型对象的使用,理解不同对象的上转型对象调用同一方法可能产生不同的行为,即理解上转型对象在调用方法时可能具有多种形态(多态)
实验要求
- 编写一个abstract的类,类名Geometry,该类有一个abstract方法
- 编写Geometry的若干子类
- 编写Student类,定义一个方法,该方法参数可变,但类型都是Geometry
- 在主类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);
}
}
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?