Saudações Pessoal! Segue uma dúvida conceitual:
Considerando a herança, existe a situação onde uma classe pai pode possuir um método privado? Qual situação? Isto é má prática?
Obrigado pessoal!
Método Privado numa classe pai
6 Respostas
o metodo eh privado qdo soh eh utilizado na propria classe…
vc decide criar um metodo para um determinado fim… e percebe q somente dentro da propria classe ira reutiliza-lo
encapsula e reutiliza… e acaba deixando o codigo mais claro… pois um metodo deve se ater a cumprir somente o q sua assinatura diz
classe Estacionamento
numero numeroDeCarrosAtual;
numero clientesFixos;
privado numero contaCarros(){
returna numeroDeCarrosAtual + clientesFixos;
}
publico booleano estaciona(Carro carro){
se(contaCarros() < vagas){
numeroDeCarrosAtual++;
retorna verdadeiro;
}senao{
retorna falso;
}
.
.
.
.
Opa! Na verdade a questão não é bem essa. Gostaria de saber se é boa prática colocar um método privado numa classe que possui herdeiros e, sendo assim, eles não terão acesso a tal método. Ou seja, uma herança que não é bem herança. Esta é a minha dúvida. Posso modularizar um trecho de código na classe pai para facilitar a leitura, mas tal trecho só eh usado nesta classe e não em suas filhas? Isto é má prática?
Abs e obrigado!
Muito pelo contrário, se você tem certeza de que esse método será usado somente na superclasse você deve declará-lo private.
Pois eh! Mas a questão é… neste caso, existirá uma herança ‘meia bomba’, certo?, visto que as classes filhas não extenderão 100% sua classe pai
Eu nunca tinha parado pra pensar nisso…
Mas eu acredito que sejam coisas “peculiares” que o método privado do pai faz… Por exemplo, uma operação de cálculo ou alguma coisa do gênero. É uma boa dúvida… Eu acho que não “bomba” porque se você quisesse alguma coisa que outras classes não pudessem acessar, seria protected.
Sem problemas! Não há necessidade alguma de uma classe filha herdar 100% da classe pai. A herança é bastante flexível nesse ponto. Ela permite tanto a classe pai escolher o que pode ser herdado quanto a classe filha escolhe o que herdar. Mesmo porque, quando você escolhe criar uma classe filha a partir de uma classe pai, o que te interessa é justamente o contrato de operação daquela classe pai, ou seja, seus métodos públicos. Uma vez que a implementação desses contratos não lhe interessa não porque você acessar os métodos privados da classe.