我对Java很新,我正在学习继承。我试图在超类Rec1下创建一个名为BetterRectangle的子类。
Rec 1获取x和y坐标(位置),并获得矩形的宽度和高度(大小)。 BetterRectangle计算矩形的周长和面积。
我在main方法中遇到错误。它找不到任何符号(即找不到rec1.getHeight(20)符号)。
public class Rec1 {
private double x;
private double y;
private double width;
private double height;
public void setLocation(double xCord, double yCord) {
x = xCord;
y = yCord;
}
public void setSize(double h, double w) {
height = h;
width = w;
}
public double getHeight(double h) {
return height;
}
public double getWidth(double w) {
return width;
}
}
public class BetterRectangle extends Rectangle {
public BetterRectangle(int x, int y, int width, int height) {
super(x, y, width, height);
super.setLocation(x, y);
super.setSize(width, height);
}
public double calcPerimeter() {
return super.getHeight() * 2 + super.getWidth() * 2;
}
public double calcArea() {
return super.getHeight() * super.getWidth();
}
}
答案 0 :(得分:0)
类BetterRectangle正在示例代码中扩展Rectangle。所以这里BetterRectangle将是child,而Rectangle将是parent。现在BetterRectangle使用super关键字来访问getHeight,getWidth等...函数。由于这些函数在Rectangle类中不存在,因此它给出了编译错误。
而不是扩展Rectangle类,在BetterRectangle中扩展Rec1类,然后运行主类Rectangle。这应该有用。
答案 1 :(得分:0)
仔细看这里
Rectangle BetterRectangle = new Rectangle();
Rectangle Rec1 = new Rectangle();
您声明的是Rectangle类型的变量而不是您自己的类。我看不到你的import语句,但你可能会创建java.awt.rectangle的类型。您正在混合变量类型和变量名称。在创建自己的类的实例时,它应如下所示:
Rec1 mySimpleRec = new Rec1();
BetterRectangle myBetterRec = new BetterRectangle()
当声明事物按此顺序放置时“输入variableName = new Type()”或“Class variableName = new Class()”。
答案 2 :(得分:0)
仔细观察:
Rectangle Rec1 = new Rectangle();
Rec1.getHeight(20);
Rec1
的类型为Rectangle
。但是Rectangle
类没有getHeight
方法。也许你想要这个:
Rec1 rec1 = new Rectangle();
rec1.getHeight(20);
请注意,我将变量重命名为rec1
,并更改了其类型。