Em Java, construtores são métodos especiais responsáveis por inicializar objetos no momento em que são criados. Eles garantem que cada objeto comece sua vida com um estado válido, evitando valores sem sentido e reduzindo erros.
new.void).| Ícone | Tipo | Característica | Quando usar |
|---|---|---|---|
| 🛠️ | No-Args Constructor | Sem parâmetros, inicializa com valores padrão | Quando você quer criar objetos "básicos" |
| 🎯 | All-Args Constructor | Recebe parâmetros para inicializar atributos | Quando você já tem todos os dados no momento da criação |
| ♻️ | Sobrecarga | Vários construtores coexistem | Para oferecer diferentes formas de criar o objeto |
Criando ninjas com diferentes formas de inicialização:
public class Ninja {
private String nome;
private String cla;
// 🛠️ Construtor sem parâmetros (No-Args)
public Ninja() {
this.nome = "Ninja desconhecido";
this.cla = "Clã desconhecido";
}
// 🎯 Construtor com parâmetros (All-Args)
public Ninja(String nome, String cla) {
this.nome = nome;
this.cla = cla;
}
public void exibirInfo() {
System.out.println("Nome: " + nome + ", Clã: " + cla);
}
public static void main(String[] args) {
Ninja ninja1 = new Ninja(); // valores padrão
Ninja naruto = new Ninja("Naruto Uzumaki", "Uzumaki");
Ninja sasuke = new Ninja("Sasuke Uchiha", "Uchiha");
ninja1.exibirInfo();
naruto.exibirInfo();
sasuke.exibirInfo();
}
}
public class Hokage {
String nome;
int idade;
boolean vivo;
// No-Args
public Hokage() {}
// All-Args
public Hokage(String nome, int idade, boolean vivo) {
this.nome = nome;
this.idade = idade;
this.vivo = vivo;
}
}
public class Main {
public static void main(String[] args) {
Hokage hashirama = new Hokage("Hashirama Senju", 60, false);
System.out.println("Primeiro Hokage: " + hashirama.nome);
System.out.println("Idade: " + hashirama.idade + " anos");
System.out.println("Vivo? " + (hashirama.vivo ? "Sim" : "Não"));
}
}
A sobrecarga permite criar vários construtores com diferentes assinaturas, oferecendo mais flexibilidade.