从超类调用变量到子类
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;
}
}
圆锥体不是圆的真子class,圆锥体应该有场Circle baseShape
。
您正在使用 protected
将变量继承到子类完全没问题。这是正确答案
//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。我假设您已经设置了该值。您应该使用 this 关键字来获取设置值。如果您将整个代码放在一起而不只是将其隐藏为注释,则很容易找到缺陷。
为 super class 和 sub-class 添加构造函数,如下所示。
//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()方法class.
public class Test {
public static void main(String[] args) {
Cone c = new Cone(3.0,5.0);
System.out.println(c.getVolume());
}
}
这里的变量area是一个实例变量,所以它的默认值设置为0.0d。参考这个link。如果你想改变面积值然后想打电话
getArea() 方法。检查下面的代码,
public double getVolume() {
return (getArea()* height / 3)
}
我无法从我的超类调用一个变量到我的子类。有人可以帮忙吗?
//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;
}
}
圆锥体不是圆的真子class,圆锥体应该有场Circle baseShape
。
您正在使用 protected
将变量继承到子类完全没问题。这是正确答案
//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。我假设您已经设置了该值。您应该使用 this 关键字来获取设置值。如果您将整个代码放在一起而不只是将其隐藏为注释,则很容易找到缺陷。
为 super class 和 sub-class 添加构造函数,如下所示。
//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()方法class.
public class Test {
public static void main(String[] args) {
Cone c = new Cone(3.0,5.0);
System.out.println(c.getVolume());
}
}
这里的变量area是一个实例变量,所以它的默认值设置为0.0d。参考这个link。如果你想改变面积值然后想打电话 getArea() 方法。检查下面的代码,
public double getVolume() {
return (getArea()* height / 3)
}