As práticas modernas de desenvolvimento em Java valorizam o uso de construtores personalizados e sobrecarregados, o que permite versatilidade na criação de objetos. Considere o trecho de código abaixo: ```java public class Produto { private String nome; private double preco; public Produto() { this.nome = "Sem nome"; this.preco = 0.0; } public Produto(String nome, double preco) { this.nome = nome; this.preco = preco; } } ``` Agora, assinale a alternativa que descreve corretamente um conceito avançado relacionado à sobrecarga de construtores.

Questão

As práticas modernas de desenvolvimento em Java valorizam o uso de construtores personalizados e sobrecarregados, o que permite versatilidade na criação de objetos.

Considere o trecho de código abaixo:

public class Produto {
    private String nome;
    private double preco;

    public Produto() {
        this.nome = "Sem nome";
        this.preco = 0.0;
    }

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }
}

Agora, assinale a alternativa que descreve corretamente um conceito avançado relacionado à sobrecarga de construtores.

Alternativas

a) O construtor-padrão com parâmetros sobrescreve obrigatoriamente o construtor sem parâmetros.

b) A classe Produto viola o encapsulamento por não declarar métodos get e set.

c) O uso de dois construtores com assinaturas diferentes caracteriza a sobrecarga, que permite múltiplas formas de instanciar objetos.

97%

d) A palavra-chave this impede a criação de instâncias com valores dinâmicos.

e) O compilador não reconhece mais de um construtor dentro da mesma classe.

Explicação

Em Java, sobrecarga (overload) de construtores ocorre quando uma classe declara mais de um construtor com o mesmo nome da classe, porém com listas de parâmetros diferentes (assinaturas diferentes).

No código, existem:

  • Produto() (sem parâmetros), que define valores padrão;
  • Produto(String nome, double preco) (com parâmetros), que inicializa o objeto com valores informados.

Isso caracteriza exatamente a sobrecarga e oferece múltiplas formas de instanciar a classe, por exemplo:

  • new Produto() cria um produto com valores padrão;
  • new Produto("Caderno", 19.9) cria um produto com valores específicos.

Analisando as alternativas:

  • (a) está errada: não existe “sobrescrita obrigatória” entre construtores; construtores não são sobrescritos, são sobrecarregados.
  • (b) está errada: ausência de getters/setters pode ser uma decisão de design; não implica violação automática do encapsulamento (os atributos continuam private).
  • (d) está errada: this apenas referencia o objeto atual e ajuda a diferenciar atributos/parâmetros; não impede valores dinâmicos.
  • (e) está errada: o compilador reconhece vários construtores, desde que as assinaturas sejam diferentes.

Alternativa correta: (c).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.