Dúvida com Classe Abstrata

3 respostas
M

Boa tarde, estou com dúvida para trabalhar com classes abstratas, quando eu uso somente polimorfismo vou bem, mas nao entendi a classe abstrata.

Alguém poderia me ajudar? abaixo as fontes

Classe Veículo

package veiculos;
 
public abstract class veiculo {  
  
   public abstract void acelerar();
    
   //   System.out.println("Todos os veiculos aceleram");    
   
}

Classe Carro

package veiculos;

public class carro extends veiculo {  
  
   public void acelerar(){  
      System.out.println("Carro acelerando");  
   }  
     
}

Classe Avião

package veiculos;

public class aviao extends veiculo {  
  
   public void acelerar(){  
      System.out.println("Avião acelerando");  
   }  
     
}

Classe da main

package veiculos;

import java.util.Scanner;  
  
public class Programa {  
     
   public static void main(String[] args) {  
        
      Scanner teclado = new Scanner(System.in);  
      System.out.print("Digite o veiculo: ");  
      String veiculo = teclado.nextLine();    
      acelerar();  
   }
}

Obrigado

3 Respostas

fkimura

Bom, vamos lá: Suas classes veiculo, carro e aviao estao ok (na verdade deveriam começar com maíusculas, classe começa com maiuscula, objeto com minuscula), agora, sua classe com main está totalmente errada. Nao vai compilar nem rodar do jeito que você imagina. O correto seria:

package veiculos;  
   
public class Programa {    
       
public static void main(String[] args) {    
    Veiculo carro = new Carro();
    carro.acelerar();
    Veiculo aviao = new Aviao();
    aviao.acelerar();

}
J

class abstract é uma classe que nao pode ser instanciada (criar um objeto com ela) (logo, você terá que ter uma class que a extends) … nela você pode definir constantes, atributos e até mesmo, metodos!
sim, só que, se vc definir metodos abstract, OBRIGATORIAMENTE suas subclasses terão que implementa-los; deu pra sacar mais ou menos?!?

vai pelo seguinte:
->planta de uma casa = uma Class
->casa já feita = uma Intancia da classe

logo:
->uma planta apenas na imaginação (apenas nas ideias, nada por escrito) = abstract class

… e para que você possa criar sua casa, você DEVE fazer a planta da casa (mantendo suas ideias, é claro (implementar os metodos, etc) )

espero ter entendido :wink:
flws!

M
fkimura:
Bom, vamos lá: Suas classes veiculo, carro e aviao estao ok (na verdade deveriam começar com maíusculas, classe começa com maiuscula, objeto com minuscula), agora, sua classe com main está totalmente errada. Nao vai compilar nem rodar do jeito que você imagina. O correto seria:
package veiculos;  
   
public class Programa {    
       
public static void main(String[] args) {    
    Veiculo carro = new Carro();
    carro.acelerar();
    Veiculo aviao = new Aviao();
    aviao.acelerar();

}

Muito Obrigado!!!!

Criado 16 de setembro de 2008
Ultima resposta 16 de set. de 2008
Respostas 3
Participantes 3