酷代码 AI
菜单
服务商

编程题目:柱体封装 1.定义一个接口Shape,至少包含求周长perimeter和面积area的方法。 2.封装一个圆Circle类,至少包含成员变量半径radius,并实现Shape接口。 3.封装一个长方形Rectangle类,至少包含成员变量长length、宽width,并实现Shape接口。 4.定义一个柱体Cylinder类,至少包含成员变量底面underside、高height,至少包含求表面积 superficialArea、体积volume的方法。其中底面的类型是Shape对象。 5.定义一个测试类CylinderTest,创建一个底面半径为5、高为6的圆柱体对象和一个底面长为4、宽为 3、高为8的矩形柱体对象,计算并输出这些对象的表面积和体积。 语言方向:Java 系统环境:Windows

```java // 1. 定义Shape接口 interface Shape { double perimeter(); // 求周长 double area(); // 求面积 } // 2. 封装Circle类实现Shape接口 class Circle implements Shape { private double radius; // 半径 public Circle(double radius) { this.radius = radius; } @Override public double perimeter() { return 2 * Math.PI * radius; // 圆周长公式 } @Override public double area() { return Math.PI * radius * radius; // 圆面积公式 } } // 3. 封装Rectangle类实现Shape接口 class Rectangle implements Shape { private double length; // 长 private double width; // 宽 public Rectangle(double length, double width) { this.length = length; this.width = width; } @Override public double perimeter() { return 2 * (length + width); // 长方形周长公式 } @Override public double area() { return length * width; // 长方形面积公式 } } // 4. 定义Cylinder类 class Cylinder { private Shape underside; // 底面(Shape类型) private double height; // 高 public Cylinder(Shape underside, double height) { this.underside = underside; this.height = height; } // 求表面积 public double superficialArea() { // 表面积 = 2 * 底面积 + 底面周长 * 高 return 2 * underside.area() + underside.perimeter() * height; } // 求体积 public double volume() { // 体积 = 底面积 * 高 return underside.area() * height; } } // 5. 测试类 public class CylinderTest { public static void main(String[] args) { // 创建圆柱体:底面半径5,高6 Circle circle = new Circle(5); Cylinder cylinder1 = new Cylinder(circle, 6); // 创建矩形柱体:底面长4宽3,高8 Rectangle rectangle = new Rectangle(4, 3); Cylinder cylinder2 = new Cylinder(rectangle, 8); // 输出结果 System.out.println("圆柱体:"); System.out.println("表面积:" + cylinder1.superficialArea()); System.out.println("体积:" + cylinder1.volume()); System.out.println("\n矩形柱体:"); System.out.println("表面积:" + cylinder2.superficialArea()); System.out.println("体积:" + cylinder2.volume()); } } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 浮点数精度问题,比较浮点数时使用误差范围而不是直接相等比较 2. 接口实现类必须实现所有接口方法,否则会编译错误 3. 构造方法中参数验证,避免传入负数半径或长度 [2025-12-29 16:01:57 | AI写代码神器 | 669点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多