Double保持返回0.0

时间:2016-04-09 19:27:01

标签: java class inheritance tostring

所以我的问题很简单,我正在尝试实现方法形状并尝试打印出球体和圆锥体的半径,面积和体积。现在我不是在帮我做作业,所以请耐心等待。关于为什么我的双人没有推出我想要的变量的一些知识。

所以我现在要做的就是使用toString方法打印“A”+名称+“of radius”+ r“

应该只是“半径为6.3的球体” 但是当我运行我的程序时,会输出“一个半径为0.0的球体”

继承我的代码:

//Main Class    
public class CircleShape
{
    String name;  
    double radius;
    double area;
    double volume;

    CircleShape(){
    }
        CircleShape(String n, double r, double a, double v)
    {
        name = n;
        radius = r;
        area = a;
        volume = v;
    } 
}

//Extension
public class SphereShape extends CircleShape
{
    public String name;
    public double r;


    public SphereShape(String n, double r)
    {
        name = n;
        radius = r;
    }

    public String getName(String name)
    {
        return name;
    }

    public void setName(String n)
    {
        name = n;
    }

    public double getRadius()
    {
        return radius;
    }

    public void setRadius(double r)
    {
    radius = r;
    }

    public String toString()
    {
    return "A " + name + " of radius " + r;
}


}
//Driver/Tester
public class CircleShapeTest extends CircleShape
{

    public static void main(String[] args)
    {
         SphereShape sph = new SphereShape("sphere", 6.3);


         System.out.println(sph);

   }
}

2 个答案:

答案 0 :(得分:0)

您从未设置类var r,您正在设置radius的{​​{1}}但从不使用此var。

更改 CircleShapereturn "A " + name + " of radius " + r;;

答案 1 :(得分:0)

不要重新声明子类中的相同字段。 CircleShape中的四个声明已经足够好了,可以由SphereShape设置和访问。重新创建新字段是不必要的,令人困惑,并导致了您的错误。