为什么我们使用没有参数的构造函数

时间:2013-11-14 20:14:21

标签: java constructor

我是java新手任何人都可以在下面的代码中解释我们做构造函数而没有参数为什么?

的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 个答案:

答案 0 :(得分:3)

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

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

  • 因为你正在使用像Hibernate这样的库的类,它依赖于它使用零arg构造函数的东西(它需要用自己的生命周期实例化对象而不必担心构造函数参数)。

答案 1 :(得分:2)

如果你没有那个构造函数,那么这个语句将不会编译[*]:

compte c = new compte();

如果没有定义构造函数,则假定为空参数构造函数。但是如果该类定义了另一个重载构造函数,则必须明确定义一个。

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

答案 2 :(得分:0)

大多数人使用没有任何参数的空构造函数,因为他们希望能够构造一个空对象。您可能希望查看重载以了解此类事物的目的。

答案 3 :(得分:0)

如果要创建默认对象。但是,java总是会使用默认值(例如null,0表示整数等)来启动变量。但是,您可能希望默认的空对象具有其他一些默认值。对于instace,在你的情况下:

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”。