"public class Rectangle { \t\tint length; \t\tint wide; \t\tint perimeter;//周长 \t\tint area;//面积 \t\t\tpublic Rectangle(int length, int wide) { \t\t\t\tthis.length = length; \t\t\t\tthis.wide = wide; \t\t\t} \t\t\tpublic Rectangle() {} \t\t\tpublic void perimeter() { \t\t\t\tperimeter = (length+wide)2; \t\t\t\tSystem.out.println("周长是:" + perimeter); \t\t\t} \t\t\tpublic void area() { \t\t\t\tarea = lengthwide; \t\t\t\tSystem.out.println("面积是:" + area); \t\t\t} \t} public class Column extends Rectangle { \t\tint height; \t\tpublic Column(int length, int wide, int height) { \t\t\t\tsuper(length, wide); \t\t\t\tthis.height = height; \t\t\t} \t\tpublic Column() {} \t\t\t//表面积 \t\tpublic void surfaceArea() { \t\t\t\tint surfaceArea = perimeter2height + area2; \t\t\t\tSystem.out.println("表面积是:" + surfaceArea); \t\t\t} \t\t\t//体积 \t\tpublic void volume() { \t\t\t\tint volume = areaheight; \t\t\t\tSystem.out.println("体积是:" + volume); \t\t\t} \t} "为什么表面积和体积是0"内容:表面积和体积为0的原因是因为在计算表面积和体积的方法中,使用到的perimeter和area变量没有被赋值。在Rectangle类中,perimeter和area是作为实例变量声明的,在对象创建时会被自动初始化为0。但是在Column类中,虽然继承了Rectangle类,但是perimeter和area并没有被重新赋值,因此它们的值仍然是0。\n\n要解决这个问题,可以在Column类的surfaceArea()和volume()方法中分别重新计算perimeter和area的值,或者将perimeter和area变量声明为protected类型,以便在子类中可以直接访问并使用它们的值。以下是第一种解决方法的示例代码:\n\npublic void surfaceArea() {\n\tperimeter();\n\tarea();\n\tint surfaceArea = perimeter2height + area2;\n\tSystem.out.println("表面积是:" + surfaceArea);\n}\n\npublic void volume() {\n\tarea();\n\tint volume = areaheight;\n\tSystem.out.println("体积是:" + volume);\n}\n\n通过调用父类的perimeter()和area()方法来计算perimeter和area的值,确保它们在计算表面积和体积时已经被正确赋值。


原文地址: https://www.cveoy.top/t/topic/pA4I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录