Constructors

Aula
Estado
  • Uma classe deve sempre ter um construtor
  • Se sua classe não possui nenhum construtor, o compilador cria um construtor vazio implicitamente; porém, se você definir um construtor o compilador não faz mais essa criação implícita. Isso quer dizer que se você implementar um construtor com parâmetros, mas quiser que ainda exista um sem parâmetros, você deve implementa-lo.
  • Um construtor pode invocar outro construtor para reutilizar sua lógica
    • a chamada para o outro construtor deve ficar na primeira linha (gera erro de compilação)
    • o compilador garante que não ocorra um loop de invocações de construtor
public Product(String name, double price) { this(name); // this.price = BigDecimal.valueOf(price); } public Product(String name) { this.name = name; this.price = BigDecimal.ZERO; }
  • Existe ainda o Instance Initializer que é um bloco de código executado antes de qualquer construtor
private static int maxId; private final int id; static { maxId = 0; } { id = ++maxId; }