在我的java程序中有2个编译错误。请澄清
我得到的错误是 1找不到符号错误 及 2“构造函数循环,类内循环不能应用于给定类型。” 在这一点上,我似乎可以理解我做错了什么在我的java程序中有2个编译错误。请澄清,java,constructor,Java,Constructor,我得到的错误是 1找不到符号错误 及 2“构造函数循环,类内循环不能应用于给定类型。” 在这一点上,我似乎可以理解我做错了什么 public class Circle { private double radius; public Circle (double radius) { radius = radius; } public double getRadius() { return radius;
public class Circle {
private double radius;
public Circle (double radius) {
radius = radius;
}
public double getRadius() {
return radius;
}
public double getArea() {
return radius * radius * Math.PI;
}
}
class B extends Circle {
private double length;
B (double radius, double length) {
Circle (radius);
length = length;
}
//**override getArea()*/
public double getArea() {
return getArea() * length;
}
}
在超级类
圈中
使用此
引用当前实例
public Circle (double radius) {
this.radius = radius;// Use this
}
在子类中,使用super()
访问超类构造函数。从
B (double radius, double length) {
Circle (radius);// This is compilation error.
length = length;
}
到
我建议您更改:
radius = radius;
到
并将B
构造函数更改为:
public Test(double radius, double length)
{
super(radius); // Calls super class constructor
this.length = length;
}
并在构造函数中使用
this.length=length
。否则,length
将被解释为参数,而不是实例变量,并且永远不会设置实例变量。实际上,在构造函数参数列表中使用final double length
。您可能还希望限制半径为正。啊,我明白了,谢谢。(我遇到另一个错误,告诉我需要将main类定义为publicstaticvoidmain(string[]args)),该类应该是publicstaticvoidmain(string[]args)
才能运行代码。由于没有方法设置半径和长度,所以将实例变量声明为final
。它明确了目的。
this.radius = radius; // 'this' makes reference to the actual instance
public Test(double radius, double length)
{
super(radius); // Calls super class constructor
this.length = length;
}