利用java继承编写上转型程序计算图形正方形圆形三角形的周长和面积
时间: 2024-10-13 07:17:36 浏览: 40
在Java中,继承是一个强大的特性,它允许创建一个称为"超类"或"父类"的抽象类,其他更具体的"子类"可以继承这个父类并添加或修改其属性和方法。如果你想编写一个程序来计算图形(如正方形、圆形和三角形)的周长和面积,并使用继承来组织结构,你可以这样做:
首先,创建一个抽象的`Shape`类作为父类,包含共同的属性(比如面积和周长的基本性质)和计算方法:
```java
public abstract class Shape {
protected double side; // 正方形边长,圆的半径,三角形的一条边
public Shape(double side) {
this.side = side;
}
// 定义抽象方法计算周长
public abstract double getPerimeter();
// 共享计算面积的方法,对具体形状的具体计算可能有所不同
public double getArea() {
return side * side; // 例如对于正方形,直接使用side的平方
}
}
```
然后,为每个具体的图形创建子类,实现`getPerimeter()`方法:
```java
// 正方形类
public class Square extends Shape {
@Override
public double getPerimeter() {
return 4 * side;
}
}
// 圆形类
public class Circle extends Shape {
private final double PI = 3.14159;
@Override
public double getPerimeter() {
return 2 * PI * side;
}
}
// 三角形类
public class Triangle extends Shape {
private double height; // 用于计算面积,假设已知
public Triangle(double base, double height) {
super(base);
this.height = height;
}
@Override
public double getPerimeter() {
return 2 * side + (height / 2); // 这里假设基础类型(base)是side,实际可能需要调整
}
// 对于特定类型的三角形(如等腰三角形或直角三角形),这里可能有特定的面积计算
}
```
现在你可以在主程序中通过`Shape`的引用实例化任意形状,并调用它们的公共方法:
```java
public static void main(String[] args) {
Shape square = new Square(5);
System.out.println("Square Perimeter: " + square.getPerimeter());
System.out.println("Square Area: " + square.getArea());
Shape circle = new Circle(7);
System.out.println("Circle Perimeter: " + circle.getPerimeter());
System.out.println("Circle Area: " + circle.getArea());
Triangle triangle = new Triangle(6, 8);
System.out.println("Triangle Perimeter: " + triangle.getPerimeter());
System.out.println("Triangle Area: " + triangle.getArea());
// ... 更多操作...
}
```
阅读全文