为什么我的java扩展无法工作?
我有一个超级级的球和延长卵形球。下面是我的代码,我收到一条错误消息,告诉我不能使用子类OvalBall。谁能帮我解释一下吗为什么我的java扩展无法工作?,java,extends,Java,Extends,我有一个超级级的球和延长卵形球。下面是我的代码,我收到一条错误消息,告诉我不能使用子类OvalBall。谁能帮我解释一下吗 public class Ball { private double diameter; private String colour; public Ball(double d, String c) { this.diameter = d; this.colour
public class Ball
{
private double diameter;
private String colour;
public Ball(double d, String c)
{
this.diameter = d;
this.colour = c;
}
public void setDiameter(double d)
{
this.diameter = d;
}
public double getDiameter()
{
return this.diameter;
}
public void setColour(String c)
{
this.colour = c;
}
public String getColour()
{
return colour;
}
public double bounce()
{
double height = diameter * 2;
return height;
}
public void roll()
{
System.out.println("wheeee");
}
public class OvalBall extends Ball
{
private double secondDiameter;
public void setSecondDiameter(double sd)
{
this.secondDiameter = sd;
}
public double getSecondDiameter()
{
return this.secondDiameter;
}
}
}
public class Main
{
public static void main(String[] args)
{
OvalBall na = new OvalBall(4,"blue",4);
na.setSDiameter(10);
System.out.println(na.bounce());
}
}
请随意更改任何内容
谢谢您需要将
OvalBall
定义为static
或在它自己的文件中。可能OvalBall没有实现hi基类的构造函数类
这就是为什么不能创建卵形球的对象
class Ball {//This is you base class contructor
//Child class contructor
public class OvalBall extends Ball
{
public OvalBall(double d, String c)
{
base(d,c);
}
}
当您在java中创建嵌套类时,有一个不同的方法。创建对象实例而不是像C#这样的其他语言的方法。
这样试试看
OvalBall是一个内部类(或嵌套类,不管Java的术语是什么)?不确定我是否看对了。如果是这样的话,那就把球打过头去吧-_-始终显示准确的错误消息,并具体说明从何处获取错误消息。就目前情况而言,我认为您的代码不会编译-因此您的语句“我收到一条错误消息,告诉我无法使用子类OvalBall。”令人困惑-请参阅上面的@JonSkeet comment-非常具体地说明错误消息,您在何时何地看到它(编译时或运行时)不,我们不必这样做(即使在这种情况下有意义)。另一个选项是添加适当的构造函数,并从外部类Ball实例创建内部OvalBall类的实例。您不会声明
OvalBall
静态,因为OP明确表示他们想要实例化它。您可能是对的,其目的是以传统方式进行扩展,并将OvalBall
放在一个单独的文件中,但我们没有足够的信息来了解这一点@Pshemo是正确的-让内部类扩展外部类是合法的,我们可以在添加了正确的构造函数的情况下使用它,并在外部类的实例上操作(Ball
)
public class Main
{
public static void main(String[] args)
{
Ball.OvalBall na = na.new OvalBall(4,"blue",4);
na.setSDiameter(10);
System.out.println(na.bounce());
}
}