48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
---
|
||
title: Abstract Classes in Java
|
||
localeTitle: Classes Abstratas em Java
|
||
---
|
||
Vamos discutir classes abstratas. Antes de mergulhar neste tutorial, é melhor que você tenha entendido conceitos de classes e herança.
|
||
|
||
Classes abstratas são classes que podem ser herdadas (isto é, estendidas), mas não podem ser instanciadas. Você pode pensar neles como uma **versão** de **classe** de interfaces ou como uma interface com código real anexado aos métodos.
|
||
|
||
Considere o seguinte exemplo para entender classes abstratas: Você tem uma classe Veículo que define certas funcionalidades básicas (métodos) e certos componentes (variáveis de objeto) que uma máquina deve ter, para ser classificada como veículo. Você não pode criar um objeto de tipo Veículo porque um veículo em si é um conceito abstrato. No entanto, você pode estender a funcionalidade da classe de veículo para criar um carro ou uma motocicleta.
|
||
|
||
``` java
|
||
abstract class Veiculo {
|
||
|
||
// variável usada para declarar o não. de rodas em um veículo
|
||
private int rodas;
|
||
|
||
// Variável para definir o tipo de motor
|
||
private Motor motor;
|
||
|
||
// um método abstrato que apenas declara, mas não define o mecanismo de partida
|
||
// funcionalidade porque cada veículo usa um mecanismo de partida diferente
|
||
abstract void start ();
|
||
|
||
}
|
||
public class Carro extends Veiculo
|
||
{
|
||
...
|
||
}
|
||
|
||
public class Motocicleta extends Veiculo
|
||
{
|
||
...
|
||
}
|
||
```
|
||
Você não pode criar um objeto usando a classe Veiculo. Porém, você pode extender a classe Veiculo, e, então, criar um objeto desta classe que extendeu Veiculo.
|
||
|
||
``` java
|
||
|
||
|
||
Veiculo veiculo = new Veiculo (); // Inválido
|
||
Veiculo carro = new Carro(); // válido
|
||
Veiculo mBike = new Motocicleta (); // válido
|
||
|
||
Carro carro = new Carro(); // válido
|
||
Motocicleta mBikeObj = new Motocicleta(); // válido
|
||
|
||
```
|