Considere o código JAVA abaixo:Em relação ao código acima, é...

Próximas questões
Com base no mesmo assunto
Q39606 Programação
Considere o código JAVA abaixo:

Imagem 001.jpg

Em relação ao código acima, é correto afirmar que:
Alternativas

Comentários

Veja os comentários dos nossos alunos

Para a FCC, atributos private não são herdados por subclasses. Pode parecer óbvio para alguns, mas pelo conceito de herança, são. Private significa que o atributo não é visível para subclasses, e não que não são herdados. Para a CESPE, o item e provavelmente estaria correto.

Infelizmente é necessário saber o que cada banca pensa de algo, estando ela errada ou não.

Também esta certa:

c) Todas as classes que herdarem a classe Carro terão o atributo modelo.

Se a classe Carro tem acesso ao atributo "modelo" que está em Veiculo ou qualquer classe que o Veiculo extenda, as subclasses de Carro, da mesma forma, também terão acesso a este atributo.

Pra mim nessa questão merecia recurso , não é possível herdar atributos com modifcador de acesso default  caso as classes estejam em pacotes separados , como não foi explicitado na questão , poderia ser usado como justificativa. Caso interpretemos como classes de mesmo pacote o item E está correto


Entretanto o item C tambem me parece correto , pois qualquer classe que herde de carro , herdará também atributo modelo , não entendi porque foi considerada errada , provavelmente teria marcado o item C.
 Deveria com certeza ser anulada. A classe está declarando um atributo "categoria" e no método "setCategoria" está atribuindo para "this.modelo", onde deveria ser "this.categoria". Deve ter sido mais um erro de copy-paste da banca.
Pois é, também aprendi que os conceitos de visibilidade e herança são coisas diferentes. Quando se usa um especificador de acesso "private" estamos falando de visibilidade do elemento e não se ele é herdado ou não por suas subclasses. Já vi inúmeras questões da FCC afirmando o contrário e, por isso, fui dar uma pesquisada na Internet. O que vi foi uma grande polêmica em tordo desse tema. Alguns afirmam que os membros private de uma classe são herdados, outros dizem justamente o contrário. O pior é que ambas as posições vêm de pessoas com experiência na linguagem. De qualquer maneira, está claro que a FCC considera que os membros "private" de uma superclasse NÃO são herdados por suas subclasses.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo