[Java Básico] – Herança Múltipla em Java

Oi Pessoal,

  De várias coisas que eu falo em sala de aula quando ensinando “Orientação a Objeto”, com certeza uma das que mais causa espanto por parte dos alunos é quando eu menciono o fato da linguagem java não suportar herança múltipla, pois bem, posso dizer com convicção que Java chegou onde chegou principalmente porque quem ajudou na evolução da linguagem eram pessoas de altíssimo nível e que tinham uma bagagem imensa em outras linguagens de programação.
  Muitos dos criados da linguagem acreditavam que em um projeto de software, a necessidade de se ter herança múltipla era pouquíssima e que ainda se mesmo assim o programador quisesse fazer uso, este estaria correndo o risco de passar por muitos problemas de design no futuro.
   Mas afinal, se um dia eu precisar de herança múltipla, como resolvo isso em Java, a resposta está no conceito de interfaces :
   Em Java, isso não é possível :

Fig.1 – Herança impossível em Java

   public class Filhote extends CachorroGato{
   }

   Mas isso e possível

   public class Filhote implements Cachorro, Gato {

   }

   Ou seja, uma determinada classe em Java pode implementar múltiplas interfaces e fazer uso de agregação para responder por chamadas a métodos que tecnicamente só poderiam acontecer se existisse a “herança múltipla”. Algo como:

Fig.2 Uso de interfaces para simular “Herança Multipla”
   public class Filhote implements ICachorro, IGato{

          private Cachorro cachorro = new Cachorro();
          private Gato gato = new Gato();   
          @override
          public void latir(){
                 cachorro.latir();
          } 

          @override
          public void miar(){
                 gato.miar();
          } 
   }
Super fácil né ?
Espero que tenham entendido…
Links úteis :
Abrcs.
Natanael Fonseca

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s