通过java实现以下程序编写要求,编写一个图形信息父类(包括计算面积、计算周长的方法),圆形子类继承父类(子类有半径的属性),矩形子类继承父类(子类有高和宽的属性),根据输入参数的个数判断是计算矩形还是原型,例如只输入3 代表原型半径,输入 2 3 代表矩形的长度和宽度。
时间: 2024-09-24 18:03:49 浏览: 22
在Java中,你可以按照以下步骤实现这个需求:
首先,创建一个名为`Shape`的父类,它包含通用的计算面积和周长的方法,以及用于子类覆盖的抽象方法:
```java
public abstract class Shape {
protected double[] dimensions; // 宽度、高度或半径
public Shape(double... dimensions) {
this.dimensions = dimensions;
}
// 父类的方法
public abstract double getArea();
public abstract double getPerimeter();
// 根据子类特性设置维度
protected void setDimensionsForCircle() {
if (dimensions.length == 1) {
this.dimsension = new double[]{dimensions[0], dimensions[0]};
} else {
throw new IllegalArgumentException("Invalid dimensions for a circle.");
}
}
protected void setDimensionsForRectangle() {
if (dimensions.length == 2) {
this.dimsension = dimensions;
} else {
throw new IllegalArgumentException("Invalid dimensions for a rectangle.");
}
}
}
```
接下来,分别创建`Circle`和`Rectangle`子类,它们继承自`Shape`并实现`getArea()`和`getPerimeter()`方法:
```java
public class Circle extends Shape {
private double radius;
@Override
protected void setDimensionsForCircle() {
super.setDimensionsForCircle();
radius = dimensions[0];
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
public class Rectangle extends Shape {
private double width;
private double height;
@Override
protected void setDimensionsForRectangle() {
super.setDimensionsForRectangle();
width = dimensions[0];
height = dimensions[1];
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
}
```
最后,在主函数中,根据传入的参数实例化相应的形状,并计算面积或周长:
```java
public static void main(String[] args) {
double[] input = {3}; // 圆形
if (input.length == 1) {
Circle circle = new Circle(input);
System.out.println("Circle area: " + circle.getArea());
System.out.println("Circle perimeter: " + circle.getPerimeter());
} else if (input.length == 2) {
Rectangle rectangle = new Rectangle(input);
System.out.println("Rectangle area: " + rectangle.getArea());
System.out.println("Rectangle perimeter: " + rectangle.getPerimeter());
} else {
System.out.println("Invalid input. Please provide either 1 or 2 numbers.");
}
}
```