Extends não funciona

2 respostas
R
Estou estudando as diversidades de implementar uma classe e cheguei neste exemplo onde eu extendo a classe progenitora e o aplicativo não roda,mas se eu elimino o extends no aplicativo roda perfeitamente.Algum colega pode explicar esse mistério.
class CaixaG {
      protected int larg,int comp,int alt;
      
      CaixaG(int l, int c,int a) {
          larg  = l;
          comp=c;
          alt  =   a;
      }
       protected int volume() {
        return larg*comp*alt;
       }
       }
    
       class TestaCaixaG extends CaixaG { //se tirar extends  CaixaG roda.

       public static void main(String args[]) {
       CaixaG caixote = new CaixaG(5,5,5);
       int varVolume =caixote.volume();
       System.out.println("Volume do caixote= "+varVolume);
       }
      }

2 Respostas

leonardom

Rosauro

Primeiro a linha:
protected int larg,int comp,int alt;

esta errada, o correto seria:
protected int larg, comp, alt;

Segundo:
Como vc criou um construtor na classe CaixaG ( CaixaG(int l, int c,int a) ), vc não tem mais o construtor default ( CaixaG() ), então se vc criar um outro contrutor sem parâmetros para a classa CaixaG, irá compilar e funcionar.

O porque isso ocorre, como vc não criou nenhum construtor para a classe filha (TestaCaixaG), o compilador irá criar automaticamento um construtor padrão. Este construtor não possue parâmetros e possue uma chamada ao contrutor da classe pai ( CaixaG ) super(). Então como na classe pai não existe um construtor sem parâmetros ocorre erro de compilação.

R
Obrigado pela atenção .Explicação brilhante.RBarcia
Criado 11 de outubro de 2003
Ultima resposta 11 de out. de 2003
Respostas 2
Participantes 2