Método Privado numa classe pai

6 respostas
G

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!

6 Respostas

JimMorrison

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;

}

.
.
.
.

G

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!

rmendes08

Muito pelo contrário, se você tem certeza de que esse método será usado somente na superclasse você deve declará-lo private.

G

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

Andre_Brito

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.

rmendes08

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.

Criado 10 de outubro de 2008
Ultima resposta 11 de out. de 2008
Respostas 6
Participantes 4