设计一个形状类(接口)Shape,方法:求周长和求面积
形状类(接口)的子类(实现类):
Rect(矩形)
Circle(圆形)
Rect类的子类:
Square(正方形)
不同的子类会有不同的计算周长和面积的方法
创建三个不同的形状对象,放在Shape类型的数组里,分别打印出每个对象的周长和面积
Shape接口:
public interface Shape {
double PerimeterSum();//周长
double Area();//面积
}
Rect(矩形
package com.mjh.dome7;
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 Area() {
return width * height;
}
@Override
public double PerimeterSum() {
return 2 * (width + height);
}
}
Circle(圆形):
package com.mjh.dome7;
public class Circle implements Shape {
private final double PI = 3.14; //圆周率pai Π
private double r; //半径
@Override
public double PerimeterSum() {
//周长 2Πr
return 2*PI*r;
}
@Override
public double Area() {
//面积Πr平方
return PI * r * r;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public Circle(double r) {
this.r = r;
}
}
Square(正方形)
package com.mjh.dome7;
public class Square extends Rect{
public Square(double width) {
super(width);
}
public Square(double width, double height) {
super(width, height);
}
@Override
public double Area() {
return getWidth() * getWidth();
}
@Override
public double PerimeterSum() {
return 4 * getWidth();
}
}
测试:
public class Test {
public static void main(String[] args) {
Shape[] shape = new Shape[3];
shape[0] = new Circle(3);
shape[1] = new Rect(5, 8);
shape[2] = new Square(5);
System.out.println("圆,矩形,正方形");
for (int i = 0; i < shape.length; i++) {
System.out.println(""+"面积为:"+shape[i].Area()+"周长为:"+shape[i].PerimeterSum());
}
}
}
运行结果: