Duvida sobre extends

3 respostas
A

pessoal, criei um jframe no net beans, entao essa classe ja vem estendida a javax.swing.JFrame, porem eu preciso usar os metodos de uma outra classe, entao vao duas perguntas :
1- é possivel uma classe ter duas classes pai ?
2- qual seria a solução ?

3 Respostas

M

Olá,

Java não suporta herança dupla, e a solução seria criar uma hierarquia de heranças, onde você cria uma classe que herda a outra e assim sucessivamente.

o uso de interface contorna este problema em partes.

:okok:

C

“marcossousa”:
Olá,

Java não suporta herança dupla…


Irmão uma leve correção… Herança Dupla -> Heraça Multipla :joia:

L

“alessandre”:
pessoal, criei um jframe no net beans, entao essa classe ja vem estendida a javax.swing.JFrame, porem eu preciso usar os metodos de uma outra classe, entao vao duas perguntas :
1- é possivel uma classe ter duas classes pai ?
2- qual seria a solução ?

Oi, você pode resolver mais ou menos dessa forma:

/**
    * Interface de animais
    */
   interface Animal
   {
      void correr();
   }

   /**
    * Interface de um gato
    */
   interface Gato extends Animal
   {
      void miar();
   }

   /**
    * Interface de um cachorro
    */
   interface Cachorro extends Animal
   {
      void latir();
   }

   /**
    * Implementação de um cachorro
    */
   class CachorroImpl implements Cachorro
   {
      public void latir()
      {
         System.out.println("latindo");
      }

      public void correr()
      {
         System.out.println("cachorro correndo");
      }
   }

   /**
    * Implementação de um gato
    */
   class GatoImpl implements Gato
   {

      public void miar()
      {
         System.out.println("miando");
      }

      public void correr()
      {
         System.out.println("gato correndo");
      }
   }

   /**
    * Pode ser cachorro ou gato, mas no fundo no fundo eh um cachorro modificado, pois possui caracteristicas Animal de um cachorro (corre como
    * cachorro, sabe latir), porem consegue fazer coisas de gatos (miar como gato).
    */
   class CachorroMiador extends CachorroImpl implements Gato
   {

      private Gato gato = new GatoImpl();

      public void miar()
      {
         gato.miar();
      }
   }

   /**
    * Pode ser cachorro ou gato, mas no fundo no fundo eh um gato modificado, pois possui caracteristicas Animal de um gato (corre como gato, sabe
    * miar), porem consegue fazer coisas de cachorros (latir como cachorro)
    */
   class GatoLatidor extends GatoImpl implements Cachorro
   {

      private Cachorro cachorro = new CachorroImpl();

      public void latir()
      {
         cachorro.latir();
      }
   }

Então vc só precisa definir o que sua classe que extende é na real: um JFrame que pode fazer coisas dessa classe X (classe com outros métodos que vc quer) ou é um X que pode fazer coisas da classe JFrame. Resumindo, ele vai ser na real um Gato Latidor ou um Cachorro Miador?! ele nasceu de uma Gata ou de uma Cadela?! das duas não é possivel :stuck_out_tongue:

Valeu!

Criado 13 de abril de 2007
Ultima resposta 13 de abr. de 2007
Respostas 3
Participantes 4