【设计一个抽象的形状类Shape,方法:求周长和求面积。shape类的子类:Rect(矩形),Circle(圆形)。Rect类的子类:Square(正方形)不同的子类会有不同的计算周长和面积的方法。】
抽象的形状类Shape
public abstract class Shape {
/**
* 求面试
*
* @return area
*/
public abstract double getArea();
/**
* 求周长
*
* @return Perimeter
*/
public abstract double getPerimeter();
}
Rect(矩形)
/**
* 矩形
*/
public class Rect extends Shape {
/**
* 宽
*/
private double width;
/**
* 长度
*/
private double length;
public Rect(double width) {
this.width = width;
}
public Rect(double width, double length) {
this.width = width;
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
@Override
public double getArea() {
return length * width;
}
@Override
public double getPerimeter() {
return 2 * (length + width);
}
}
Circle(圆形)
/**
* 圆形
*/
public class Circle extends Shape {
/**
* 圆周率
*/
private final double PI = 3.14;
/**
* 半径
*/
private double r;
public Circle(double r) {
this.r = r;
}
public double getPI() {
return PI;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public double getArea() {
return PI * r * r;
}
@Override
public double getPerimeter() {
return 2 * PI * r;
}
}
Square(正方形)
/**
* 正方形
*/
public class Square extends Rect {
public Square(double width) {
super(width);
}
@Override
public double getArea() {
return getWidth() * getWidth();
}
@Override
public double getPerimeter() {
return 4 * getWidth();
}
}
测试类
public class TestMain {
public static void main(String[] args) {
System.out.println("==============圆==============");
Circle circle = new Circle(3.0);
double circleArea = circle.getArea();
double circlePerimeter = circle.getPerimeter();
System.out.println("圆半径:" + circle.getR());
System.out.println("圆面积:" + circleArea + ", 圆周长:" + circlePerimeter);
System.out.println("==============矩形==============");
Rect rect = new Rect(3, 4);
double rectArea = rect.getArea();
double rectPerimeter = rect.getPerimeter();
System.out.println("矩形长度:" + rect.getLength() + ", 矩形宽度:" + rect.getWidth());
System.out.println("矩形面积:" + rectArea + ", 矩形周长:" + rectPerimeter);
System.out.println("==============正方形==============");
Rect square = new Square(3);
double squareArea = square.getArea();
double squarePerimeter = square.getPerimeter();
System.out.println("正方形边长:" + square.getWidth());
System.out.println("正方形面积:" + squareArea + ", 正方形周长:" + squarePerimeter);
}
}
运行结果