设计一个圆类Circle,具有私有属性:圆心坐标x和y及圆的半径r。空参和有参构造方法。作者 吕行军 单位 河北农业大学
时间: 2025-03-23 08:05:42 浏览: 87
### 设计圆类 `Circle` 的实现
以下是基于面向对象编程原则设计的一个完整的 `Circle` 类,其中包含了私有属性 `x`, `y`, 和 `r`(分别代表圆心的横坐标、纵坐标和半径),并提供了无参构造函数和有参构造函数。
#### 属性说明
- 私有属性 `_x`: 圆心的横坐标。
- 私有属性 `_y`: 圆心的纵坐标。
- 私有属性 `_r`: 圆的半径。
#### 方法说明
- **无参构造函数**: 初始化圆心坐标为 `(0, 0)`,半径为 `1`。
- **有参构造函数**: 接收三个参数来初始化圆心坐标和半径。
- **getter 和 setter 方法**: 提供访问和修改私有属性的功能。
- **计算面积的方法**: 计算并返回圆的面积。
以下是具体的代码实现:
```java
// 定义 Circle 类
public class Circle {
private double _x; // 圆心的横坐标
private double _y; // 圆心的纵坐标
private double _r; // 半径
// 无参构造函数,默认值设置
public Circle() {
this._x = 0;
this._y = 0;
this._r = 1;
}
// 有参构造函数,接收 x, y, r 参数
public Circle(double x, double y, double r) {
this._x = x;
this._y = y;
if (r >= 0) { // 确保半径非负
this._r = r;
} else {
throw new IllegalArgumentException("Radius cannot be negative.");
}
}
// Getter 方法用于获取_x
public double getX() {
return _x;
}
// Setter 方法用于设置_x
public void setX(double x) {
this._x = x;
}
// Getter 方法用于获取_y
public double getY() {
return _y;
}
// Setter 方法用于设置_y
public void setY(double y) {
this._y = y;
}
// Getter 方法用于获取_r
public double getR() {
return _r;
}
// Setter 方法用于设置_r
public void setR(double r) {
if (r >= 0) {
this._r = r;
} else {
throw new IllegalArgumentException("Radius cannot be negative.");
}
}
// 计算圆的面积
public double area() {
return Math.PI * _r * _r;
}
}
```
上述代码实现了 `Circle` 类的设计需求[^2]。通过无参构造函数可以快速创建一个默认的圆实例;而通过有参构造函数,则可以根据具体的需求自定义圆的位置和大小。
---
### 测试类 `TestShape`
为了验证 `Circle` 类的功能,可以通过以下测试类进行演示:
```java
public class TestShape {
public static void main(String[] args) {
// 使用无参构造函数创建 Circle 对象
Circle circle1 = new Circle();
System.out.println("Circle1 Area: " + circle1.area());
// 使用有参构造函数创建 Circle 对象
Circle circle2 = new Circle(3, 4, 5);
System.out.println("Circle2 Area: " + circle2.area());
// 修改属性并通过 getter 获取新值
circle2.setR(7); // 设置新的半径
System.out.println("Updated Circle2 Radius: " + circle2.getR());
System.out.println("Updated Circle2 Area: " + circle2.area());
}
}
```
运行以上程序将展示不同情况下圆的面积计算结果,并验证了 `setter` 和 `getter` 方法的有效性。
---
### 注意事项
1. 在设定半径时需确保其值大于等于零,否则抛出异常提示用户输入错误。
2. 如果需要扩展功能,比如增加周长计算方法或其他几何操作,可以在现有基础上进一步完善。
---
阅读全文
相关推荐


















