Usando extends

3 respostas
O

Olá…

estou com uma duvida…

estou criando uma classe que extende uma outra classe que eu criei…essa outra classe tb extende outra classe, ela extende um JPanel.

bom…só q ta dando um problema e o meu JBuilder diz pra colocar a seguinte linha:

public MinhaClasse() { super(); }
pelo q intendi essa linha super xama o construtor da classe extendida neh.

mas pq isso ocorre ?? pq quando eu extendo uma classe do proprio java como o JPanel ou JFrame eu não preciso colocar a linha super() ?? …

vlw aee…

3 Respostas

J

Na realidade, um construtor sempre precisa chamar ou super() ou this().

O que ocorre é que quando você não coloca nada, o compilador insere um super() pra você, mas isso só vai funcionar se a superclasse tiver um construtor super() vazio assim... se não, vai dar erro dizendo que o contrutor não existe, e você precisa chamar passando os parametros corretos, e nao faz diferença quem criou a classe, se é da API padrão ou não...

ex.:

public class Animal{
   public Animal(String especie){

   }
}

public class Cao extends Animal{
   public Cao(){

   }
}

A classe Cao não compila porque a classe Animal não tem um construtor vazio para poder chamar super() vazio...

então você teria que chamar explicitamente:

public class Cao extends animal{
   public Cao(){
      super("especie do cao");
   }
}
O

humm…to intendendo…

intaum q dize q os construtores de JPanel são vazios?

hah oq vc quis dize com vazios?? se q dize sem parametros ou sem conteúdo ou os dois??

vlw cara…

S

Sem parâmetros.
Pode ter conteúdo ou não. Conteúdo declarado, já que a primeira linha será super() ou this().

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