Pular para o conteúdo principal

Questão de Programação — JEE (Java Enterprise Edition) — Quadrix 2025

ProgramaçãoJEE (Java Enterprise Edition)
Código
qg603655
Banca
Quadrix
Órgão
SEDF
Ano
2025
Nível
Superior
Cargo
Professor de Educação Básica: Informática
O professor André ministra uma disciplina de Desenvolvimento Web em Java EE para alunos de nível superior. Ele solicita que os estudantes implementem um sistema simplificado de cadastro de produtos, utilizando J2EE, que inclui tipos de dados elementares e estruturados, métodos (funções e procedimentos) e estruturas de controle de fluxo. Parte do código desenvolvido é apresentada a seguir.


public class Produto {
    private String nome;
    private int quantidade;
    private double preco;
 
public Produto(String nome, int quantidade, double preco) {
    this.nome = nome;
    this.quantidade = quantidade;
    this.preco = preco;
 }

public double calcularValorTotal() {
 return quantidade * preco;
 }

  public void aplicarDesconto(double percentual) {
      if(percentual > 0 & percentual < 100) {
        preco ‑= preco * percentual / 100;
     } else {
         System.out.println(“Percentual inválido”);
   }
 }

  public static void main(String[] args) {
       Produto p = new Produto(“Notebook”, 5, 4500.00);
       p.aplicarDesconto(10);
       System.out.println(“Valor total: “ + p.calcularValorTotal());
    }
}
A respeito do código Java apresentado, julgue o item seguinte. O construtor public Produto(String nome, int quantidade, double preco) inicializa os atributos da classe e é considerado um método com retorno implícito do tipo Produto.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Construtores em Java: retorno implícito?

Gabarito: ERRADO. O construtor public Produto(String nome, int quantidade, double preco) inicializa os atributos da classe, mas não é um método com retorno implícito do tipo Produto — na verdade, um construtor não possui tipo de retorno algum, nem mesmo void. A afirmação mistura dois conceitos distintos da linguagem Java: o construtor (que inicializa objetos) e o método (que pode ter retorno). A fonte é a própria especificação da linguagem Java e o material de apoio sobre construtores.

O construtor é um bloco de código especial, invocado no momento da criação do objeto com a palavra-chave new. Sua função é inicializar o estado do objeto — ou seja, atribuir valores iniciais aos atributos da instância. No código apresentado, o construtor recebe três parâmetros (nome, quantidade, preco) e os utiliza para preencher os atributos correspondentes da classe Produto.

A confusão que a banca explora aqui é sutil e recorrente: o construtor parece um método porque tem nome, parâmetros e corpo, mas ele é uma categoria própria. A diferença fundamental está na declaração: um método comum declara um tipo de retorno (como double, void, String), enquanto o construtor não declara nenhum tipo de retorno — e isso não é um "retorno implícito", é a ausência total de retorno. Se você tentasse escrever public Produto Produto(...), o compilador acusaria erro, pois o construtor não pode ter tipo de retorno declarado.

Outra diferença crucial: o construtor é chamado automaticamente quando o objeto é criado com new, enquanto um método comum precisa ser invocado explicitamente. No código, new Produto("Notebook", 5, 4500.00) dispara o construtor; já p.calcularValorTotal() é uma chamada explícita a um método. O construtor também tem a restrição de que seu nome deve ser idêntico ao nome da classeProduto —, o que não se aplica a métodos comuns.

Para fixar: o construtor não retorna nada, nem implicitamente. O que ele faz é produzir um objeto inicializado como efeito colateral da operação new. O objeto criado é o resultado da expressão new Produto(...), mas isso não significa que o construtor "retorna" o objeto — o retorno é da expressão new, não do construtor. Essa distinção é o coração da pegadinha.

PEGA ESSA DICA!

Na prova, quando a questão falar em "retorno implícito" de construtor, desconfie imediatamente. Construtor não tem retorno, ponto final. Para diferenciar na hora: método tem tipo de retorno na assinatura (ou void); construtor tem apenas o nome da classe. Se a assinatura começa com o nome da classe e não tem tipo de retorno, é construtor.

Item — ❌ ERRADO

A afirmação contém dois erros entrelaçados. Primeiro, diz que o construtor é "um método" — mas construtor não é método, é uma categoria especial. Segundo, afirma que ele tem "retorno implícito do tipo Produto" — mas construtor não tem retorno nenhum, nem implícito. O que existe é que a expressão new Produto(...) avalia para um objeto do tipo Produto, mas isso é propriedade do operador new, não do construtor. O construtor apenas inicializa os atributos; quem "entrega" o objeto é a operação de criação. Portanto, a assertiva está errada.

Gabarito: ERRADO — o construtor inicializa os atributos, mas não é método e não possui retorno implícito.

Link permanente: /questoes/qg603655