Ich weiß, wenn der Standardkonstruktor nicht deklariert ist und meine Klasse keinen anderen Konstruktor hat, erzeugt Java automatisch einen Standardkonstruktor für mich. Wenn ich einen Konstruktor deklariere, muss ich den Standardkonstruktor manuell deklarieren.Java-Klasse ohne Standardkonstruktor
Warum ist dieser Fall lac4 Standardwerte in Attribute enthält, die nicht in Konstruktor initilized worden sind, und ich habe nicht Standardkonstruktors („ataque“, „vidaAtual“ und „vidaMaxima“ enthält 0)? Ich weiß, dass Java Attribute mit Standardwerten initialisiert, aber für mich geschieht dies nur im Standardkonstruktor.
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
}
Mein Haupt
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);
}
'„Wenn ich etwas Konstruktor deklarieren, muss ich manuell den Standard-Konstruktor deklarieren.“' - in der nicht wahr Allgemeinsinn. Sie müssen dies nur deklarieren, wenn Ihr Programm es aus irgendeinem Grund benötigt. –
"Warum enthält dieser Fall lac4 Standardwerte in Attributen, die im Konstruktor nicht initialisiert wurden und ich keinen Standardkonstruktor habe (" ataque "," vidaAtual "und" vidaMaxima "enthält 0)?" Java initialisiert Instanz- und Klassenvariablen auf Standardwerte (0 für Integer-Typen, 0.0 für Fließkommawerte, False für Boolean und Null für Referenzen). –