我的指示是创建一个具有默认值的无参构造函数。
我很难设置正确的构造函数来初始化我的类变量
re
和im
。我尝试创建一个默认构造函数并使用它,但是出现了许多错误,表明我没有正确执行此操作。
public class Complex {
// Constants (final)
protected double re; // the real part
protected double imag; // the imaginaryinary part
// Variables
public double product;
public Complex() {}
// create a new object with the given real and imaginaryinary parts
Complex() {
this.re = real;
imag = imaginary;
}
....... Code goes on
我认为,我的大部分问题都与我的构造函数有关,并且缺乏
this
。
您在
Complex
类中有一个构造函数,但它未设置为接受参数,但您尝试在构造函数中设置类变量,就像您接受参数一样。将构造函数更改为:
// create a new object with the given real and imaginary parts
Complex(double real, double imaginary) {
this.re = real;
imag = imaginary;
}
其次,您在调用时会收到其他错误:
Comp.Complex();
这不是有效的线路。您可以调用 Comp 上的其他方法(不应大写,应称为“comp”,例如:
comp.reciprocal()
您还可以使用无参数默认构造函数作为默认值,如下所示:
public Complex(){
}
您不需要初始化双精度数 re 和 imaginary,因为原始双精度数会自动初始化为 0.0。
如果你想将它们初始化为其他值,它看起来像:
public Complex(){
re = 100.00; //or some other value
imaginary = 200.00; //or some other value
}
最后,您可以拥有多个构造函数,只要每个构造函数具有不同数量的输入参数和/或不同的类型。因此,同时拥有一个默认构造函数和一个接受 2 个双精度数作为输入的构造函数是可以接受的。
您确实应该阅读 Java 构造函数。对于任何新的 Java 开发人员来说,这是一个非常基本和核心的主题,只需付出一点努力来学习该语言的结构,您所遇到的问题就可以轻松纠正。网上有很多示例和教程,这里只是其中之一:http://www.java-made-easy.com/java-constructor.html
错误,因为您错过了 构造函数的 args。
// create a new object with the given real and imaginaryinary parts
Complex(double real, double imaginary) {
this.re = real;
imag = imaginary;
}
如果需要正确初始化值,可以对参数使用
final
修饰符。请参阅建议 在构造函数和 setter 参数上使用 Final 。
Complex(final double real, final double imaginary) {
this.re = real;
imag = imaginary;
}
对象属性可以在构造函数中初始化,也可以在对象创建后初始化,您需要使用修改器来修改对象的非最终属性。
在早期对象中,您可以与构造函数一起初始化成员内联。
在最后一种情况下,有很多其他方法可用于初始化对象,在大多数情况下,您应该在方法上使用
public
修改器,通过修改对象的属性来改变对象的状态。
// create a new object with the given real and imaginaryinary parts
Complex() {
this.re = 1.0;
this.imag = 2.0;
}