1.编写一个抽象类(Shape),长方形、三角形和圆形均为其子类,并各有各的属性。其父类中有计算周长和面积的方法。在测试类中,分别建立如干个对象,计算并输出各对象的周长和面积。并写出详细过程
时间: 2024-12-24 09:19:05 浏览: 8
首先,我们创建一个名为`Shape`的抽象类作为所有几何形状的公共父类,包含两个抽象方法`calculatePerimeter()`和`calculateArea()`,表示计算周长和面积的动作。然后,我们将创建三个具体的子类,分别是`Rectangle`、`Triangle`和`Circle`,每个子类会有自己的特定属性,并实现这两个方法。
```java
// 抽象类 Shape
abstract class Shape {
protected abstract double calculatePerimeter();
protected abstract double calculateArea();
// 公共方法打印周长和面积
public void displayProperties() {
double perimeter = calculatePerimeter();
double area = calculateArea();
System.out.printf("Shape: %s\n", getClass().getSimpleName());
System.out.println("Perimeter: " + perimeter);
System.out.println("Area: " + area);
}
}
// 长方形 Rectangle
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
protected double calculatePerimeter() {
return 2 * (length + width);
}
@Override
protected double calculateArea() {
return length * width;
}
}
// 三角形 Triangle
class Triangle extends Shape {
private double base;
private double height;
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
@Override
protected double calculatePerimeter() {
return base + (base / 2); // 假设这是一个等腰三角形,其他情况需相应调整
}
@Override
protected double calculateArea() {
return 0.5 * base * height;
}
}
// 圆形 Circle
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
protected double calculatePerimeter() {
return 2 * Math.PI * radius;
}
@Override
protected double calculateArea() {
return Math.PI * radius * radius;
}
}
// 测试类 Test
public class Test {
public static void main(String[] args) {
Shape rectangle = new Rectangle(5, 10);
Shape triangle = new Triangle(7, 4);
Shape circle = new Circle(3);
rectangle.displayProperties();
triangle.displayProperties();
circle.displayProperties();
}
}
```
在这个例子中,我们在`main`方法中创建了`Rectangle`、`Triangle`和`Circle`的对象,并通过它们的父类`Shape`调用了`displayProperties`方法,计算并输出各自的周长和面积。
阅读全文