如何实现带SET/GET方法的自定义Rectangle类?
实现带get/set方法的自定义Rectangle类
没问题,我已经帮你把需要的get/set方法补上了,还加了简单的参数校验避免非法的长宽值,同时写了测试代码来验证功能。下面是完整的实现:
class Rectangle { // 私有成员变量,保证封装性 private double length; private double width; // 计算面积的方法 public double calculateArea() { return length * width; } // 计算周长的方法 public double calculatePerimeter() { return 2 * (length + width); } // 长的set方法,添加参数校验 public void setLength(double length) { if (length > 0) { this.length = length; } else { System.out.println("长度必须大于0,设置失败"); } } // 长的get方法 public double getLength() { return this.length; } // 宽的set方法,添加参数校验 public void setWidth(double width) { if (width > 0) { this.width = width; } else { System.out.println("宽度必须大于0,设置失败"); } } // 宽的get方法 public double getWidth() { return this.width; } public static void main(String[] args) { // 创建第一个Rectangle对象 Rectangle rect1 = new Rectangle(); rect1.setLength(5.0); rect1.setWidth(3.0); System.out.println("矩形1的长:" + rect1.getLength()); System.out.println("矩形1的宽:" + rect1.getWidth()); System.out.println("矩形1的面积:" + rect1.calculateArea()); System.out.println("矩形1的周长:" + rect1.calculatePerimeter()); // 创建第二个Rectangle对象 Rectangle rect2 = new Rectangle(); rect2.setLength(8.5); rect2.setWidth(4.2); System.out.println("\n矩形2的长:" + rect2.getLength()); System.out.println("矩形2的宽:" + rect2.getWidth()); System.out.println("矩形2的面积:" + rect2.calculateArea()); System.out.println("矩形2的周长:" + rect2.calculatePerimeter()); // 测试非法值设置 Rectangle invalidRect = new Rectangle(); invalidRect.setLength(-2.0); } }
关键部分说明:
- 封装性处理:把
length和width设为private,外部无法直接修改,只能通过我们提供的set方法操作,保证数据安全性 - set方法的参数校验:添加了判断逻辑,确保设置的长宽是正数,避免计算出无意义的面积/周长
- get方法:提供对外获取长宽的接口,方便在需要的时候读取这些属性值
- 测试代码:在
main方法里创建了两个正常的矩形对象,演示了set/get方法的使用,同时测试了非法值的情况
运行这段代码后,你就能看到两个矩形的长宽、面积和周长的输出,同时非法值设置会给出提示。
内容的提问来源于stack exchange,提问作者JohnH
相关产品推荐
相关产品推荐

