计算各图形的面积,半径或边长由键盘输入
时间: 2025-07-05 21:03:02 浏览: 2
### 实现根据不同形状计算面积
为了实现根据不同形状(如圆、矩形等)的用户输入参数(如半径或边长)来计算面积的功能,可以通过面向对象编程中的继承和多态特性来构建解决方案。下面是一个基于 Java 的具体实现方案。
#### 抽象类 `Shape`
创建一个名为`Shape`的抽象类作为基类,其中包含两个公共属性:画笔颜色(`color`)以及布尔类型的填充状态(`filled`)。该类还声明了用于获取面积和周长的抽象方法,这些方法将在派生类中被覆盖实现[^2]。
```java
public abstract class Shape {
protected String color;
protected boolean filled;
public Shape() {
this.color = "white";
this.filled = true;
}
public Shape(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
@Override
public String toString(){
return "A shape with color of "+this.getColor()+" and "+(this.isFilled()?"filled":"not filled");
}
// Getters & Setters
public String getColor() {return color;}
public void setColor(String color) {this.color = color;}
public boolean isFilled() {return filled;}
public void setFilled(boolean filled) {this.filled = filled;}
// Abstract methods to be implemented by subclasses.
public abstract double getArea();
public abstract double getPerimeter();
}
```
#### 圆形类 Circle
圆形类继承自`Shape`并增加了特定于圆形的新成员变量——半径(radius),同时提供了相应的构造器初始化此字段,并实现了父类定义的抽象方法以提供针对圆形的具体逻辑。
```java
public class Circle extends Shape {
private final double radius;
public Circle(double radius){
super("red", false);
this.radius=radius;
}
public Circle(double radius, String color, boolean filled){
super(color,filled);
this.radius=radius;
}
public double getRadius(){return radius;}
@Override
public double getArea(){
return Math.PI * Math.pow(this.getRadius(), 2);
}
@Override
public double getPerimeter(){
return 2*Math.PI*this.getRadius();
}
@Override
public String toString(){
return "Circle["+super.toString()+"] has a radius="+getRadius();
}
}
```
#### 长方形类 Rectangle 和 正方形类 Square
对于矩形而言,则引入宽度(width)与高度(height)这两个额外的数据成员;而正方形由于四条边长相等,故只需指定单一边长即可完成实例化操作。
阅读全文
相关推荐


















