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);
}
}
Extends não funciona
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.
2 Respostas
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
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo