[英]Calling variable to subclass from superclass
我沒有從我的超類到子類調用變量的運氣。 有人可以幫忙嗎?
//SUPERCLASS
public class Circle {
protected double radius;
protected double area;
//Some code to construct object and initialize radius
//Return Calculated Area
protected double getArea() {
area = Math.pow(radius, 2) * Math.PI;
return area;
}
}
//SUBCLASS
public class Cone extends Circle {
private double height;
//Some more code with constructors and different methods
public double getVolume() {
{
return (area * height / 3)
}
}
代碼還有很多,但是我遇到的主要問題是在子類中,'area'變量為0.00,我不確定如何使其等於超類中計算的'area'
嘗試:
public double getVolume() {
return (getArea() * height / 3)
}
此外:圓應在構造函數中以其半徑初始化,並且沒有字段區域,因為它取決於半徑:
public class Circle {
protected final double radius;
public Circle(double radius) {
this.radius = radius
}
public double getArea() {
return Math.pow(radius, 2) * Math.PI;
}
}
圓錐不是圓的適當子類,圓錐應具有一個字段Circle baseShape
。
這里的變量區域是一個實例變量,因此其默認值設置為0.0d。 請參考此鏈接 。 如果要更改區域值,則要調用getArea()方法。 檢查下面的代碼,
public double getVolume() {
return (getArea()* height / 3)
}
您正在使用protected
完全可以將變量繼承給subclass。 這是正確的答案
//SUPERCLASS
public class Circle {
protected double radius;
protected double area;
//Some code to construct object and initialize radius
//Return Calculated Area
protected double getArea() {
area = Math.pow(radius, 2) * Math.PI;
return area;
}
}
//SUBCLASS
public class Cone extends Circle {
private double height;
//Some more code with constructors and different methods
public double getVolume() {
{
return (getArea() * height / 3)
}
}
除非將值設置為“半徑和面積”,否則它將保持為0。我認為您已經設置了該值。 您應該使用此關鍵字來獲取設置值。 如果您將整個代碼放入而不只是將其隱藏為注釋,則很容易發現該缺陷。
為父類和子類添加構造函數,如下所示。
//Super Class
public class Circle {
protected double radius;
protected double area;
public Circle(double radius) {
this.radius = radius;
this.area = getArea();
}
protected double getArea() {
area = Math.pow(radius, 2) * Math.PI;
return area;
}
}
//Sub Class
public class Cone extends Circle {
private double height;
public Cone(double radius, double height) {
super(radius);
this.height = height;
}
public double getVolume() {
{
return (area * height / 3);
}
}
}
之后,您可以使用子類的getVolume()方法。
public class Test {
public static void main(String[] args) {
Cone c = new Cone(3.0,5.0);
System.out.println(c.getVolume());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.