"public class Rectangle { \t\tint length; \t\tint wide; \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\t//周长 \t\tpublic void perimeter() { \t\t\t\tint perimeter = (length+wide)2; \t\t\t\tSystem.out.println("周长是:" + perimeter); \t\t\t} \t\t\t//面积 \t\tpublic void area() { \t\t\t\tint area = 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\tsuper(length, wide); \t\t\tthis.height = height; \t\t} \t\t\tpublic Column() {} \t\t\t//表面积 \t\tpublic void surfaceArea() { \t\t\t\tint surfaceArea = perimeterheight + area2; \t\t\t\tSystem.out.println("表面积是:" + surfaceArea); \t\t\t} \t\t\t//体积 \t\tpublic void volume() { \t\t\t\tint volume = area*height; \t\t\t\tSystem.out.println("体积是:" + volume); \t\t\t} \t} 为什么报错,第二种解决办法是 在类Column中,使用perimeterarea变量之前没有定义这两个变量。这是因为这两个变量只存在于父类Rectangle中,子类无法直接访问父类的成员变量。 \n\n 要解决这个问题,可以通过调用父类的方法来获取perimeterarea的值。修改Column类的代码如下: \n\n java \n public class Column extends Rectangle { \n \t int height; \n \n \t public Column(int length, int wide, int height) { \n \t \t super(length, wide); \n \t \t this.height = height; \n \t } \n \n \t public Column() {} \n \n \t //表面积 \n \t public void surfaceArea() { \n \t \t int perimeter = (length + wide) * 2; \n \t \t int area = length * wide; \n \t \t int surfaceArea = perimeter * height + area * 2; \n \t \t System.out.println(\"表面积是:\" + surfaceArea); \n \t } \n \n \t //体积 \n \t public void volume() { \n \t \t int area = length * wide; \n \t \t int volume = area * height; \n \t \t System.out.println(\"体积是:\" + volume); \n \t } \n } \n \n\n 这样修改后,Column类中的surfaceAreavolume方法就可以获取父类Rectangle中的lengthwide成员变量,并计算相应的值了。

Java继承报错:子类无法访问父类成员变量的解决方法

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

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