← Questões de Programação

Programação · CONSULPLAN · 2021

Questão comentada de Programação

Sobre a linguagem Java, marque V para as afirmativas verdadeiras e F para as falsas. ( ) A classe String é um exemplo de uma classe final. ( ) Uma declaração do método final nunca pode mudar; assim, todas as subclasses utilizam a mesma implementação do método. ( ) Um método final em uma superclasse pode ser sobrescrito como uma subclasse, garantindo que a implementação do método final será utilizada por todas as subclasses diretas e indiretas na hierarquia. ( ) Uma classe final pode ser estendida para criar uma subclasse, e todos os métodos em uma classe final são, implicitamente, final. ( ) Métodos que são declarados private são implicitamente final, porque não é possível sobrescrevê-los como uma subclasse. A sequência está correta em

Gabarito: D

Em Java, a palavra-chave final aparece muito para limitar alterações: em classe, impede herança; em método, impede sobrescrita; em variável, impede reatribuição. A classe String é um exemplo clássico de classe final, justamente porque não pode ser estendida. Isso ajuda a garantir segurança e imutabilidade em vários pontos da linguagem. Também é importante separar método final de método private. Um método final não pode ser sobrescrito por subclasses, então a implementação dele continua a mesma na hierarquia. Já um método private nem sequer é herdado de forma acessível pela subclasse, então também não pode ser sobrescrito. Na prática, a banca gosta de misturar essas ideias para ver se voce confunde herança com visibilidade. A prova acerta o gabarito D porque a primeira afirmação é verdadeira: String é final. A segunda também é verdadeira: método final não pode mudar por sobrescrita, então a mesma implementação vale para as subclasses. A terceira é falsa porque justamente o método final não pode ser sobrescrito por subclasse. A quarta é falsa porque classe final não pode ser estendida, embora seus métodos sejam considerados, em regra, não sobrescrevíveis por herança. A quinta é verdadeira no sentido cobrado em prova: métodos private não podem ser sobrescritos, pois não são acessíveis pela subclasse. Resumo de prova: classe final trava herança; método final trava sobrescrita; private também não é sobrescrito porque fica fora do alcance da subclasse.

Continue treinando

Questões relacionadas