误解如何使用无参数构造函数[关闭]

问题描述 投票:0回答:3

我的指示是创建一个具有默认值的无参构造函数。

我很难设置正确的构造函数来初始化我的类变量

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

java syntax constructor compiler-errors
3个回答
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()

您还可以使用无参数默认构造函数作为默认值,如下所示:

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


3
投票

错误,因为您错过了 构造函数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
修改器,通过修改对象的属性来改变对象的状态。


0
投票
 // create a new object with the given real and imaginaryinary parts
Complex() {
    this.re = 1.0;
    this.imag = 2.0;
}
© www.soinside.com 2019 - 2024. All rights reserved.