Skip to content

Construtores

Introdução

  • construtor = método especial em Java utilizado para inicializar um objeto quando ele é criado
    • método especial para inicializar objetos, sem tipo de retorno e nome igual ao da classe
  • diferente de métodos comuns, um construtor não possui um tipo de retorno - nem mesmo void
  • deve ter o mesmo nome da classe
  • o construtor é automaticamente chamado durante a criação de um novo objeto com a palavra-chave new
  • objetivo dos construtores
    • inicializar os atributos de um objeto
    • definir configurações iniciais de um objeto
    • garantir que um objeto seja criado em um estado consistente
  • construtores são essenciais para garantir que os objetos tenham um estado inicial válido e consistente, tornando o código mais claro e seguro

Tipos de construtores

  • construtor padrão / default constructor = criado automaticamente, sem parâmetros, inicializa com valores padrão
    • criado automaticamente pelo Java se nenhum construtor for explicitamente definido
    • não possui parâmetros e inicializa os atributos com valores padrão
    • 0 para números, false para booleanos, null para objetos
public class Pessoa {
    private String nome;
    private int idade;

    // Construtor padrão (gerado automaticamente se não for definido)
    public Pessoa() {
        // não faz nada ou inicializa com valores padrão
    }
}
  • construtor parametrizado
    • recebe parâmetros que permitem inicializar os atributos da classe com valores específicos no momento da criação do objeto
    • útil para criar objetos com estados iniciais definidos
public class Pessoa {
    private String nome;
    private int idade;

    // Construtor parametrizado
    public Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }
}

Sobrecarga de construtores

  • sobrecarga de construtores = ocorre quando uma classe possui mais de um construtor, cada um com uma lista diferente de parâmetros
    • permite criar objetos de várias maneiras, oferecendo flexibilidade para inicializar os atributos com diferentes combinações de valores
public class Pessoa {
    private String nome;
    private int idade;

    // Construtor padrão
    public Pessoa() {
        this.nome = "Desconhecido";
        this.idade = 0;
    }

    // Construtor parametrizado - um parâmetro
    public Pessoa(String nome) {
        this.nome = nome;
        this.idade = 0;
    }

    // Construtor parametrizado - dois parâmetros
    public Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }
}

Exercícios

Questões

  1. Um construtor é um tipo especial de método que é chamado automaticamente quando um objeto é criado.
  2. Construtores podem ter o mesmo nome da classe ou qualquer outro nome que o programador preferir.
  3. Se você não definir um construtor, o Java fornecerá um construtor padrão automaticamente.
  4. Construtores podem ser sobrecarregados, permitindo múltiplas versões do construtor na mesma classe.
  5. Um construtor pode ter um tipo de retorno, como void, para indicar que ele não retorna um valor.
  6. O construtor padrão fornecido pelo Java não aceita parâmetros.
  7. É possível chamar um construtor dentro de outro construtor da mesma classe usando a palavra-chave this.
  8. Construtores podem ser marcados como static.
  9. Se um construtor parametrizado for definido, o construtor padrão não será fornecido automaticamente.
  10. Você pode ter construtores private em uma classe para controlar a criação de instâncias.
  11. A palavra-chave super pode ser usada em um construtor para chamar o construtor da classe pai.
  12. Construtores são herdados pelas subclasses e não precisam ser definidos novamente.
  13. Um construtor não pode lançar exceções.
  14. O objetivo de um construtor é inicializar o estado do objeto recém-criado.
  15. Construtores podem ser declarados como final para evitar que sejam sobrescritos.

Gabarito

  1. Verdadeiro: um construtor é executado automaticamente quando um novo objeto é criado, inicializando seus atributos.
  2. Falso: um construtor deve obrigatoriamente ter o mesmo nome da classe, caso contrário, não será considerado um construtor.
  3. Verdadeiro: se nenhum construtor for definido, o Java cria um construtor padrão vazio que não aceita parâmetros.
  4. Verdadeiro: construtores podem ser sobrecarregados, permitindo diferentes formas de inicializar objetos.
  5. Falso: construtores não têm tipo de retorno, nem mesmo void; sua assinatura é apenas o nome da classe.
  6. Verdadeiro: o construtor padrão fornecido automaticamente pelo Java não possui parâmetros.
  7. Verdadeiro: a palavra-chave this pode ser usada para invocar outro construtor da mesma classe.
  8. Falso: construtores não podem ser static, pois são relacionados à criação de instâncias, e static é para membros que pertencem à classe, não a instâncias.
  9. Verdadeiro: se um construtor parametrizado é definido, o construtor padrão não será mais fornecido automaticamente, a menos que você o defina explicitamente.
  10. Verdadeiro: construtores podem ser private para restringir a criação de objetos, útil em padrões de projeto como Singleton.
  11. Verdadeiro: a palavra-chave super é usada para invocar o construtor da classe pai, ajudando na inicialização da herança.
  12. Falso: construtores não são herdados, mas a classe filha pode chamar o construtor da classe pai explicitamente usando super.
  13. Falso: construtores podem lançar exceções usando throws, como qualquer outro método.
  14. Verdadeiro: o objetivo de um construtor é inicializar o objeto, fornecendo valores iniciais aos atributos.
  15. Falso: construtores não podem ser final, pois eles não são herdáveis e não podem ser sobrescritos.