Métodos Abstratos (Obrigatoriedade de sobrescrita)

2 respostas
M

Olá pessoal,

Esbarrei em uma dúvida, seguinte vamos supor que tenhamos uma superclasse profissional de saúde, e tenhamos as subclasses, Medico, Dentista e Enfermeira. Essas subclasses poderiam herdar as caracteristicas da superclasse sem problemas. Mas a idéia da superclasse é agrupar tudo que é comum, vamos dizer que eu tenha um método(abstrato) fazerCirurgia(); esse méteto é usado tanto para médicos quanto apra dentistas, se ele estivar declarado na superclasse eu obrigo Enfermeira a sobrescrever esse método o qual é um pouco estranho pois ela não fará uso do memso, ela não tem nada a ver com isso, e se eu fazer escrever esse método para a classe Dentista e Medico eu não estou reutilizando código nem usando os beneficios da Herança, esse problema cresce quanto temos várias subclasses de categorias diferentes, inevitavelmente algumas categorias terão métodos em comum mas outra que herdam a mesma classe pai não terão nada a ver como o caso da Enfermeira, alguem saberia uma forma eficiente de resolver essa questao?


 Sou novo no fórum e me desculpem caso esteja inflingindo alguma regra com esse postagem. Não sei  rss

2 Respostas

D

Olá MarcosScrobolsize,

Então cara concordo com o seu raciocínio quanto a herança, mas o contexto que você citou precisa ser analisado com mais calma…

Na minha humilde opinião, para que se obrigue que uma classe implemente determinados métodos abstratos, o ideal seria criar uma Interface ao invés de uma Classe. Pois quando criamos uma Interface em Java, obrigatoriamente os métodos são abstratos, ou seja, não podem ter uma linha código…

No exemplo que você citou, ao criar uma Interface ProfissionalDeSaude, outra coisa que se precisa analisar com bastante calma é o seguinte…

“Quais são as características comuns para todos os profissionais de saúde, sem nenhuma exceção ?”

Fazendo a seguinte análise, você perceberá que o método fazerCirurgia() não estará nesta Interface, pois esta “característica” não pertence à qualquer profissional de saúde…

É isso cara, espero ter ajudado em algo…

Abraços, bons estudos e fica com Deus!

Douglas

rmendes08

O que você pode fazer nesse caso é separar o método fazerCirurgia() em uma interface específica Cirurgiao, e fazer Medico e Dentista implementarem essa interface. Lembrando que o objetivo primordial da herança é prover polimorfismo. O reaproveitamento do código é uma consequencia.

Criado 25 de outubro de 2011
Ultima resposta 26 de out. de 2011
Respostas 2
Participantes 3