Marcos está trabalhando em um projeto de sistemas em Java e quer garantir que o atributo de uma classe seja inicializado apenas uma vez e que seu valor não possa ser modificado posteriormente. Na linguagem de programação Java, esse atributo deve ser definido com o modificado
- A)abstract.
Errada: abstract é usada para classes ou métodos abstratos, não para tornar atributo imutável.
- B)default.
Errada: default não serve para impedir alteração de atributo; aparece em contextos como métodos em interfaces ou modificadores de acesso em pacotes.
- C)final.
Certa: final é o modificador usado para impedir reatribuição do atributo após sua inicialização.
- D)native.
Errada: native indica que o método é implementado fora da JVM, em código nativo, e não trata de atributo.
- E)volatile.
Errada: volatile trata de visibilidade e sincronização entre threads, não de impedimento de modificação do valor.
Gabarito: C
Em Java, quando você quer que um atributo seja definido uma vez e depois fique travado, a palavra-chave que interessa é final. Ela indica que a referência ou o valor associado àquele campo não pode ser reatribuído após a inicialização, o que atende exatamente à ideia da questão. Pense nela como uma espécie de etiqueta de "não mexa mais aqui" no atributo. Isso não significa, porém, que o objeto apontado por uma referência final seja necessariamente imutável. Se o atributo guardar um objeto mutável, o conteúdo interno desse objeto pode mudar, embora a referência continue a mesma. Em prova, a banca costuma cobrar essa diferença com cuidado. No caso descrito, Marcos quer garantir inicialização única e impossibilidade de modificação posterior. Em Java, isso é feito com final, seja no atributo diretamente, seja em conjunto com construtor ou inicialização de bloco. É por isso que o gabarito é a alternativa C. As demais opções tratam de outros assuntos: abstract diz respeito a classe ou método abstrato, default aparece em outros contextos da linguagem, native indica método implementado fora do Java, e volatile está ligado à visibilidade de variáveis entre threads, não à imutabilidade.