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) {
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) {
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!