Olá amigos, vi em um teste do livro da katty uma classe com um método com esses modificadores:
Pra mim, ao inserir o modificador final em um método, você está impedindo que ele seja sobrescrito, e a sobrescrita só ocorre na herança, certo?
Então qual seria a utilizade de um modificador “private final”?
Grato.
Olá,
Cara… por questões de acesso…
Por exemplo um método private final , como voce disse não pode ser sobreescrito E só pode ser acessado dentro do mesmo objeto.
Já um método public final, não pode ser sobreescrito mas pode ser acessado por outros objetos.
Abraços.
mas se ele já e private, não tem necessidade de ser final…
Entendeu?
Todo método privado é implicitamente final.
Sim. Concordo. Se o modificador já é private voce não vai conseguir acessa-lo de fora , quanto muito menos então sobreescreve-lo.
Apenas estou mostrando a diferença de acesso no exemplo que citei.
Abraços.
Legal!
Outro dia achei uma coisa parecida tb…
Em uma classe abstract:
Construtores protected tem a mesma visibilidade de construtores public
Abs.
Caros colegas,
Sobre a questão private final , acho que seria útil somente em casos de se evitar que uma classe interna tente extender um método da classe “outter” .
Luiz Renato
Tb não ocorre, se a classe externa “Outter” tiver um método private e a classe interna declarar um método com os mesmos parâmetros, ocorrerá uma reescrita do método.
…
Olhe o que eu descobri tb:
A classe interna pode somente acessar um método private dentro do seu próprio corpo, através de uma instância isso não é viável:
[code]class Externa {
private void meuMetodo() {
}
class Interna {
Interna() {
meuMetodo(); // <= aqui o acesso é possível
}
}
}[/code]
O acesso descrito acima é viável, porém:
Externa.Interna interna1 = new Externa.new Interna();
interna1.meuMetodo(); // não é válido!
Abs.