实验名称:
计算图形面积
实验目的:
学习并运用方法的调用,方法的重写,动态绑定技术
实验步骤:
- 定义三个类,父类GeometricObject代表几何形状,子类Circle代表圆形, MyRectangle代表矩形。
- 定义一个测试类GeometricTest, 编写equalsArea方法测试两个对象的面积是否相等(注意方法的参数类型,利用动态绑定技术),编写displayGeometricObject方法显示对象的面积(注意方法的参数类型,利用动态绑定技术)。
实验结果:
63.61725123519331
32.0
false
实验代码:
import static java.lang.Math.PI;
public class Test {
public static boolean equalArea(GeometricObject go1,GeometricObject go2){
return go1.findArea() == go2.findArea();
}
public static void display(GeometricObject go){
System.out.println(go.findArea());
}
public static void main(String[] args) {
Circle c = new Circle(4.5);
double carea = c.findArea();
display(c);
MyRectangle re = new MyRectangle(4,8);
double rarea = re.findArea();
display(re);
boolean isEquals = equalArea(c,re);
System.out.println(isEquals);
}
}
class GeometricObject {
private String color;
private double weight;
public GeometricObject() {
}
public GeometricObject(String color, double weight) {
this.color = color;
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double findArea() {
return 0.0;
}
}
class Circle extends GeometricObject {
private double radius;
public Circle(String color, double weight, double radius) {
super(color, weight);
this.radius = radius;
}
public Circle() {
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circle(double radius) {
this.radius = radius;
}
@Override
public double findArea(){
double area = PI*radius*radius;
return area;
}
}
class MyRectangle extends GeometricObject {
private double width;
private double height;
public MyRectangle() {
}
public MyRectangle(String color, double weight, double width, double height) {
super(color, weight);
this.width = width;
this.height = height;
}
public MyRectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
@Override
public double findArea(){
double area = width*height;
return area;
}
}
实验总结:
了解了方法是如何定义并调用的;了解了方法的重写,需要有继承关系,方法名参数列表一致;了解了动态绑定技术如何使用。