2017-03-18 12 views
0

デフォルトのコンストラクタが宣言されておらず、クラスに他のコンストラクタがない場合、Javaは自動的にデフォルトコンストラクタを生成します。 コンストラクタを宣言すると、デフォルトのコンストラクタを手動で宣言する必要があります。デフォルトのコンストラクタを持たないJavaクラス

はなぜがはコンストラクタでinitilizedされていない属性のデフォルト値が含まれています。この場合LAC4であり、私はデフォルトコンストラクタありません(「vidaMaxima」「ataque」、「vidaAtual」とが含まれている0)?私はJavaがデフォルト値で属性を初期化することを知っていますが、これはデフォルトコンストラクタでのみ発生します。

public class CartaLacaio { 

    private int ID; 
    private String nome; 
    private int ataque; 
    private int vidaAtual; 
    private int vidaMaxima; 
    private int custoMana; 

    public CartaLacaio(int ID, String nome, int ataque, int vida, int mana) { 
     this.ID = ID; 
     this.nome = nome; 
     this.ataque = ataque; 
     this.vidaAtual = vida; 
     this.vidaMaxima = vida; 
     this.custoMana = mana; 
    } 

    public CartaLacaio(int ID, String nome, int custoMana){ 
     this.ID = ID; 
     this.nome = nome; 
     this.custoMana = custoMana; 
    } 

    public CartaLacaio(CartaLacaio origem){ 

    } 

    //Getters and setters 

}

public static void main(String[] args) { 
     CartaLacaio lac1 = new CartaLacaio(1, "Frodo Bolseiro", 2, 1, 1); 
     CartaLacaio lac2 = new CartaLacaio(2, "Aragorn", 5, 7, 6); 
     CartaLacaio lac3 = new CartaLacaio(3, "Legolas", 8, 4, 6); 
     CartaLacaio lac4 = new CartaLacaio(4, "Teste nome", 3); 
    } 
+3

'「私はいくつかのコンストラクタを宣言した場合、私は手動でデフォルトコンストラクタを宣言する必要があります。」' - で真実ではありません一般的な意味。何らかの理由でプログラムが必要とする場合にのみ宣言する必要があります。 –

+0

"この場合、lac4にはコンストラクタで初期化されていない属性のデフォルト値が含まれていますが、デフォルトコンストラクタ(" ataque "、" vidaAtual "および" vidaMaxima "には0が入ります) Javaは、インスタンス変数とクラス変数をデフォルト値(整数型の場合は0、浮動小数点の場合は0.0、ブール値の場合はfalse、参照の場合はnull)に初期化します。 –

答えて

関連する問題