Explicação:
Uma classe abstrata possui um método final e executa métodos abstratos que serão implementados nas classes filhas.
Exemplo:
Realizando a compra de um pacote turístico, você possui a execução de um roteiro, no qual será ir para algum lugar, passear neste lugar e voltar para o seu ponto de partida.
A execução do roteiro é a mesma, "ir" "passear" voltar, o que muda é qual o seu meio de transporte para que você possa ir e voltar e aonde você irá passear. A execução do algoritmo que não muda fica definida em um template, que irá chamar os métodos que serão definidos nas classes filhas.
public abstract class Viagem {
public final void viajar() {
ir();
passear();
voltar();
}
public abstract void ir();
public abstract void voltar();
public abstract void passear();
}
class PacoteA extends Viagem {
public void ir() {
System.out.println("Ir de avião");
}
public void voltar() {
System.out.println("Voltar de avião");
}
public void passear() {
System.out.println("Passear em São Paulo");
}
}
class PacoteB extends Viagem {
public void ir() {
System.out.println("Ir de ônibus");
}
public void voltar() {
System.out.println("Voltar de ônibus");
}
public void passear() {
System.out.println("Passear no Rio de Janeiro");
}
}
class PacoteC extends Viagem {
public void ir() {
System.out.println("Ir de ônibus");
}
public void voltar() {
System.out.println("Voltar de ônibus");
}
public void passear() {
System.out.println("Passear na Bahia");
}
}
Percebam que é um algoritmo bem simples.
Obrigado.
Nenhum comentário:
Postar um comentário