← Questões de Programação

Programação · CONSULPLAN · 2025

Questão comentada de Programação

Considere o seguinte trecho de código em Java: public class Veiculo { private String marca; private String modelo; public Veiculo(String marca, String modelo) { this.marca = marca; this.modelo = modelo; } public void exibirDetalhes() { System.out.println("Marca: " + marca + ", Modelo: " + modelo); } } public class Carro extends Veiculo { private int ano; public Carro(String marca, String modelo, int ano) { super(marca, modelo); this.ano = ano; } @Override public void exibirDetalhes() { super.exibirDetalhes(); System.out.println("Ano: " + ano); } } Com base no código, analise as afirmativas a seguir. I. A classe Carro herda os atributos marca e modelo da classe Veiculo. II. O método exibirDetalhes na classe Carro sobrescreve o método da classe Veiculo. III. Os atributos marca e modelo podem ser acessados diretamente na classe Carro. IV. A palavra-chave super é usada para chamar o construtor da classe pai. Está correto o que se afirma apenas em

Gabarito: B

Quando uma classe herda outra em Java, ela recebe a estrutura da classe pai, mas isso não significa acesso livre a tudo. No caso, Carro estende Veiculo, então faz sentido dizer que existe herança entre elas. Só que os atributos marca e modelo foram declarados como private na classe Veiculo, então eles não podem ser acessados diretamente dentro de Carro. Para usar esses dados, a subclasse depende de métodos da própria classe pai, ou de outros mecanismos de acesso que a linguagem permita. O item II está correto porque o método exibirDetalhes em Carro usa exatamente a mesma assinatura do método da classe Veiculo e, por isso, o sobrescreve. O @Override é o sinalzinho clássico de que a intenção é essa mesmo: polimorfismo na veia, sem mistério. A subclasse chama super.exibirDetalhes() para reaproveitar o comportamento da classe pai e depois acrescenta a informação do ano. O item IV também está certo: a palavra-chave super é usada para acessar membros da superclasse, inclusive para chamar o construtor do pai com super(marca, modelo). Isso é importante porque o objeto Carro precisa ser inicializado como um Veiculo antes de completar sua própria construção. Assim, o gabarito B está correto porque apenas II e IV estão verdadeiras. O item I até parece plausível, mas costuma confundir quem acha que herdar atributo é o mesmo que poder acessá-lo diretamente. E o item III erra justamente por ignorar o private, que fecha a porta para acesso direto pela subclasse.

Continue treinando

Questões relacionadas