0

I am new to java Can any one explain in below code we do constructor without parametre why?

java

import java.util.*;
public  abstract class  compte {
protected int numero;
protected String nom;
protected double solde;
protected String datecreate;
ArrayList<operation> op= new ArrayList<operation>();


public compte(int numero,String nom,double solde,String datecreate){
 this.numero=numero;
 this.nom=nom;
 this.solde=solde;
 this.datecreate=datecreate;
}

public compte(){

}
4

4 回答 4

3

添加零参数构造函数的原因:

  • 因为您希望能够使用零参数构造函数构造此类的子类。(如果您创建一个构造函数,那么 Java 编译器不会为您创建无参数的。)

  • 因为您将类与 Hibernate 之类的库一起使用,该库依赖于它与零参数构造函数一起工作的东西(它需要用自己的生命周期实例化对象,而不必担心构造函数参数)。

于 2013-11-14T20:19:11.963 回答
2

如果那里没有该构造函数,则此语句将无法编译[*]:

compte c = new compte();

如果未定义构造函数,则假定为空参数构造函数。但是,如果该类定义了另一个重载构造函数,则必须显式定义一个。

[*]:我建议您遵循 Java 命名约定。我的示例将类名显示为compte(以演示使用您的代码)。它将Compte(带有大写字母 c)在遵循约定的代码中。

于 2013-11-14T20:19:00.963 回答
0

大多数人使用不带任何参数的空构造函数,因为他们希望能够构造一个空对象。您可能想研究重载以了解此类事情的目的。

于 2013-11-14T20:16:35.983 回答
0

如果要创建默认对象。但是,java 将始终使用默认值(例如 null、0 表示整数等)初始化您的变量。但也许您希望默认的空对象具有其他一些默认值。例如,在您的情况下:

public abstract class compte {
    protected int numero;
    protected String nom;
    protected double solde;
    protected String datecreate;
    ArrayList<operation> op = new ArrayList<operation>();

    public compte(int numero, String nom, double solde, String datecreate) {
        this.numero = numero;
        this.nom = nom;
        this.solde = solde;
        this.datecreate = datecreate;
    }

    public compte() {
        this.numero = 1;
        this.nom = "Default";
        this.solde = 123.45;
        this.detecreate = "Detecreate";
    }
}

如果你不想让你自己的'默认'只是让构造函数为空,以便能够为你的对象创建一个“java-default”。

于 2013-11-14T20:23:12.573 回答