Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 7 da Aula 3 - Códigos parecidos e o Template Method

Qual é a diferença entre final public e protected na prevenção do uso do metodo calcula em

class TemplateDeImpostoCondicional implements Imposto { public final double calcula(Orcamento orcamento) {

1 resposta
solução!

Olá Edison! Veja só, quando utilizamos o modificador public dizemos que um atributo ou método de uma classe está visível para qualquer outra classe. Já o protected indica que uma segunda classe só terá acesso ao atributo ou método de sua classe caso eles estejam no mesmo pacote ou essa segunda classe herde da classe que esteja com o modificador protected.

Mas porque foi usado public final? Veja só, a palavra reservada final é utilizada quando não queremos que nada altere nosso código. Exemplo:

private final int numero = 3;

Caso algum outro código queira alterar o valor dessa minha variável numero, não vai ser possível pois ela é final e assim inalterável.

Então da mesma forma é feita com um método. Quando utilizamos herança, nós damos a possibilidade de a subclasse sobrescrever um método da superclasse, ou seja, alterar a regra de negócio do método para uma regra específica para si. Mas, ao colocarmos um método como final isso não é possível, o método passa a não poder mais ser sobrescrito. Assim, quando você usa o protected, você permite que um método seja visualizado em uma subclasse e este método pode ser sobrescrito. Já quando você usa public final você apenas permite a visualização, não permitindo que ele seja sobrescrito.

Espero ter ajudado! Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software