[英]New to Java: SuperClass and SubClass
我對 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();
}
}
BetterRectangle 類正在擴展示例代碼中的 Rectangle。 所以這里 BetterRectangle 將是子級,而 Rectangle 將是父級。 現在 BetterRectangle 使用 super 關鍵字來訪問 getHeight、getWidth 等...函數。 因為這些函數在 Rectangle 類中不存在,所以它給出了編譯錯誤。
不是擴展 Rectangle 類,而是在 BetterRectangle 中擴展 Rec1 類,然后運行主類 Rectangle。 這應該有效。
仔細看這里
Rectangle BetterRectangle = new Rectangle();
Rectangle Rec1 = new Rectangle();
您正在聲明 Rectangle 類型的變量而不是您自己的類。 我看不到您的導入語句,但您可能正在創建 java.awt.rectangle 類型。 您正在混淆變量類型和變量名稱。 創建您自己的類的實例時,它應該如下所示:
Rec1 mySimpleRec = new Rec1();
BetterRectangle myBetterRec = new BetterRectangle()
在聲明事物時,將它們按“Type variableName = new Type()”或“Class variableName = new Class()”的順序排列。
仔細看:
Rectangle Rec1 = new Rectangle();
Rec1.getHeight(20);
Rec1
的類型是Rectangle
。 但是Rectangle
類沒有getHeight
方法。 也許你想要這個:
Rec1 rec1 = new Rectangle();
rec1.getHeight(20);
請注意,我將變量重命名為rec1
,並更改了其類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.