我的指示是使用默认值创建一个无参数的构造函数。
我在设置正确的构造函数以初始化类变量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'
答案 0 :(得分:3)
错误,因为您错过了 args 构造函数。
// create a new object with the given real and imaginaryinary parts
Complex(double real, double imaginary) {
this.re = real;
imag = imaginary;
}
如果您需要正确初始化值,可以使用final
修改器来使用args。请参阅建议Use final on constructor and setter parameters。
Complex(final double real, final double imaginary) {
this.re = real;
imag = imaginary;
}
对象属性可以在构造函数的早期初始化,也可以在创建对象后最近初始化,需要使用mutators来修改对象的非final属性。
在早期对象和构造函数中,您可以初始化成员内联。
在最后一种情况下,有很多其他方法可用于初始化对象,在大多数情况下,您应该在方法上使用public
修饰符,通过修改其属性来改变对象的状态。
答案 1 :(得分:3)
你在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()
您还可以使用默认的no-args默认构造函数,如下所示:
public Complex(){
}
您不需要初始化双精度和虚数,因为原始双精度自动初始化为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
答案 2 :(得分:0)
// create a new object with the given real and imaginaryinary parts
Complex() {
this.re = 1.0;
this.imag = 2.0;
}