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]
-------------------------------------------------------------------------

Responder a