Herança é um princípio de orientação a objetos, que permite que classes compartilhem atributos e métodos, através de "heranças". Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos. O conceito de herança de várias classes é conhecido como herança múltipla.(Fonte Wikipédia).
Neste exemplo iremos implementar uma classe pai(Veiculo) e duas classes filhas(Passeio e Transporte) e uma quarta que será a que vai executar nossa implementação.
Então temos:
01) Veiculo.java
02) Passeio.java
03) Transporte.java
04) UsandoVeiculo.java
Aqui na primeira classe Veiculo.java, adicionamos atributos que são de todos os tipos de veículo, como placa, cor e ano de fabricação.
Também iremos implementar um método para imprimir o relatório e um outro que traduz um valor booleano em uma string('Sim' e 'Não') para que o usuário possa entender o que esta sendo retornado.
Implementação da classe pai:
/**
* @author marco.bidoia@gmail.com
*
*/
public class Veiculo
{
String placa;
String cor;
int ano;
public void Relatorio(){
System.out.println("Placa: " + placa);
System.out.println("Cor: " + cor);
System.out.println("Ano:
" + ano);
}
public String
getBooleanToStr(boolean valorBooleano){
if
(valorBooleano){
return "Sim";
}else{
return "Não";
}
}
}
/**
* @author marco.bidoia@gmail.com
*
*/
public class Passeio extends Veiculo {
int numPortas;
boolean direcaohidraulica;
public void Relatorio(){
super.Relatorio();
System.out.println("Número
de portas: " + numPortas);
System.out.println("Direção
hidraulica: " + getBooleanToStr(direcaohidraulica));
}
}
No método de Relatório anterior observe que para imprimir o valor booleano usamos um método chamado "getBooleanToStr(boolean)" que ao passarmos um valor boolean nos retorna "Sim"(True) ou "não"(False) para que o resultado fique legível aos usuários.
/**
* @author marco.bidoia@gmail.com
*
*/
public class Transporte extends Veiculo{
int capacidade;
String tipo;
public void Relatorio(){
super.Relatorio();
System.out.println("Capacidade:
" + capacidade);
System.out.println("Tipo:
" + tipo);
}
}
/**
* @author marco.bidoia@gmail.com
*
*/
public class UsandoVeiculo {
public static void main(String[] args){
// Veículo
de passeio
Passeio Lancer = new Passeio();
Lancer.ano = 2012;
Lancer.cor = "Prata";
Lancer.direcaohidraulica = true;
Lancer.numPortas = 4;
Lancer.placa = "ABC1234";
Lancer.Relatorio();
System.out.print("\n");
// Veículo de transporte
Transporte Onibus = new Transporte();
Onibus.ano = 2010;
Onibus.cor = "Verde";
Onibus.tipo = "Urbano";
Onibus.capacidade = 44;
Onibus.placa = "QWE0987";
Onibus.Relatorio();
}
}
O resultado da nossa aplicação será este:
Placa: ABC1234
Cor: Prata
Ano: 2012
Número de portas: 4
Direção hidraulica: Sim
Placa: QWE0987
Cor: Verde
Ano: 2010
Capacidade: 44
Tipo: Urbano