设计一个形状类(接口)Shape,方法:求周长和求面积
形状类(接口)的子类(实现类):
Rect(矩形)
Circle(圆形)
Rect类的子类:
Square(正方形)
不同的子类会有不同的计算周长和面积的方法
创建三个不同的形状对象,放在Shape类型的数组里,分别打印出每个对象的周长和面积
Circle
public class Circle implements Shape{
private final double PI = 3.14; //圆周率
private double r;//半径
@Override
public double getArea() {
return PI * r * r;
}
@Override
public double getPerimeter() {
return PI * r * 2;
}
public double getPI() {
return PI;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public Circle() {
}
public Circle(double r) {
this.r = r;
}
}
Rect
public class Rect implements Shape{
private double width; // 宽
private double 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;
}
// 一个参数构造,给子类正方形用
public Rect(double width) {
this.width = width;
}
//两个参数的构造,自己用
public Rect(double width, double height) {
this.height = height;
this.width = width;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return width * height;
}
@Override
public double getPerimeter() {
// TODO Auto-generated method stub
return 2 * (width + height);
}
}
Shape
public interface Shape {
double getArea();
double getPerimeter();
}
Square
public interface Shape {
double getArea();
double getPerimeter();
}
Test
public class Test {
public static void main(String[] args) {
Shape[] shape = new Shape[3];
shape[0] = new Circle(4);
System.out.println("========圆形周长和面积========");
System.out.println(String.format("%.2f", shape[0].getArea()));
System.out.println(shape[0].getPerimeter());
shape[1] = new Rect(5, 8);
System.out.println("========矩形周长和面积========");
System.out.println(shape[1].getArea());
System.out.println(shape[1].getPerimeter());
shape[2] = new Square(5);
System.out.println("========正方形周长和面积========");
System.out.println(shape[2].getArea());
System.out.println(shape[2].getPerimeter());
}
}