Laura, Precisar ele não precisa. Aí se entra numa questõ mais de design que numa questão de...hmm compilador, digamos assim.
O "extends" funciona para uma classe "abstract" _exatamente_ da mesma forma como funciona para uma classe não abstrata. A diferença é que você nunca vai poder instanciar um objeto da classe abstrata. ATENÇÃO: isso _não impede_ você de instanciar um objeto de uma de suas subclasses. Isso quer dizer, usando o exemplo do Igor, que no arquivo principal.java você não pode fazer veiculo v = new veiculo(); <--- erro na compilação mas você pode fazer moto m = new moto(); <-- moto e jeep NÃO SÃO abstract jeep j = new jeep(); A pergunta é, por que fazer a classe abstract? Se ( no seu sistema todos os veículos são somente e somente só motos e jeeps, isto é, não existe um veículo, sem que ele seja ou um jeep ou uma moto, ) { // então Não faz sentido, na realidade do seu projeto, permitir ao programador fazer veiculo v = new veiculo(); } elseif( Se no seu sistema você tem motos, jeeps, e de vez em quando algo diferente, mas como é algo muito difícil de acontecer você decide não fazer uma classe só pra isso ) { // então Você deixa a classe veiculo sem ser abstract, e quando tiver de referenciar a um veículo que não é moto nem jeep, você usa: veiculo v = new veiculo(); } Essa discussão sobre design poderia avançar para o uso de interfaces, mas isso fica para um outro dia. ;-) []s, Alexei Znamensky <[EMAIL PROTECTED]> Fone: +55 11 3814 1911, ramal 125 Spectrum Engenharia LTDA http://www.spectrum.com.br/ > -----Original Message----- > From: Laura Silveira Mastella [mailto:[EMAIL PROTECTED]] > Sent: sexta-feira, 19 de outubro de 2001 08:50 > To: [EMAIL PROTECTED] > Subject: Re: [java-list] Dúvida > > > Olá, > > Porque vc precisa declarar a classe Veiculo como "abstract"? > > abstract class veiculo{ > > Não sei como funciona quando vc faz um "extends" de uma > classe "abstract", > mas vc Com Certeza nao poderá instanciá-la. E talvez também > seja preciso > colocar um "public" na frente de class principal. > > []'s > > Laura > > > ----- Original Message ----- > From: "Igor Betim de Freitas" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Thursday, October 18, 2001 8:27 PM > Subject: [java-list] Dúvida > > > Arquivo ==> Veiculo.java > > > > abstract class veiculo{ > > // aqui declarei métodos e atributos... > > > > // depois criei uma série de Sub Classes para a classe Veículo > > class moto extends veiculo{ > > } > > > > class jeep extends veiculo{ > > } > > } > > > > Em um arquivo separado, tenho o programa principal: > > > > Arquivo ==> principal.java > > > > class principal{ > > public static void main(String args[]){ > > moto obj_moto; > > jeep obj_jeep; > > } > > } > > ------------------------------ LISTA SOUJAVA > ---------------------------- > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > regras da lista: http://www.soujava.org.br/regras.htm > para sair da lista: envie email para > [EMAIL PROTECTED] > -------------------------------------------------------------- > ----------- > > ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------