设计一个抽象类Shape(图形)包含求面积和周长的area()方法和perimeter()方法,并利用Java多态技术设计其子类Circle(圆形)类和Lader(梯形)类,设计一个面向抽象类的Compute类,并分别实现计算对应图形的面积和周长,在主类Test中显示两种不同图形的计算结果。
Shape类:
public abstract class Shape {
abstract double area();
abstract double perimeter();
}
Circle类
class Circle extends Shape {
double radius;
Circle(double r) {
radius = r;
}
double area() {
return Math.PI * radius * radius;
}
double perimeter() {
return 2 * Math.PI * radius;
}
}
Lader类
class Lader extends Shape {
double upper, lower, height;
Lader(double u, double l, double h) {
upper = u;
lower = l;
height = h;
}
double area() {
return (upper + lower) * height / 2;
}
double perimeter() {
return upper + lower + 2 * Math.sqrt(height * height + (lower - upper) * (lower - upper) / 4);
}
}
Compute类
class Compute {
static void compute(Shape s) {
System.out.println("Area: " + s.area());
System.out.println("Perimeter: " + s.perimeter());
}
}
Test类
public class Test {
public static void main(String[] args) {
Circle c = new Circle(5);
Compute.compute(c);
Lader l = new Lader(3, 5, 4);
Compute.compute(l);
}
}