package co.hp.zuoye;
public class Circle implements Shape {
private final double PI = 3.14; //圆周率
private double r; //半径
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public Circle(double r) {
this.r = r;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return PI * r * r;
}
@Override
public double getPerimeter() {
// TODO Auto-generated method stub
return PI * r * 2;
}
}
package co.hp.zuoye;
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);
}
}
package co.hp.zuoye;
public interface Shape {
// 求面积方法
double getArea();
// 求周长方法
double getPerimeter();
}
package co.hp.zuoye;
public class Square extends Rect {
public Square(double width) {
super(width);
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return getWidth() * getWidth();
}
@Override
public double getPerimeter() {
// TODO Auto-generated method stub
return 4 * getWidth();
}
}
package co.hp.zuoye;
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("圆形面积:");
System.out.println(shape[0].getPerimeter());
shape[1] = new Rect(5, 8);
System.out.println("矩形周长:");
System.out.println(shape[1].getArea());
System.out.println("矩形面积:");
System.out.println(shape[1].getPerimeter());
shape[2] = new Square(5);
System.out.println("正方形周长:");
System.out.println(shape[2].getArea());
System.out.println("正方形面积:");
System.out.println(shape[2].getPerimeter());
}
}