CodeGym /Cursos /Núcleo do Java /Como usar classes abstratas

Como usar classes abstratas

Núcleo do Java
Nível 3 , Lição 3
Disponível

"Olá, amigo! Ontem você foi ensinado nas formas de classes abstratas. Agora é hora de aprofundar nosso conhecimento. Quero ensiná-lo a usar classes abstratas corretamente."

É difícil criar uma analogia do mundo real para uma classe abstrata. Uma classe geralmente é um modelo de alguma entidade. Mas uma classe abstrata contém métodos que não foram implementados e pode conter métodos que foram implementados. O que isso significa? Que analogia para uma classe abstrata podemos encontrar? Existe tal coisa no mundo real?

Na verdade, existe. Imagine o chassi de um carro quase pronto em uma esteira rolante. Posso instalar um motor turbinado ou um motor altamente eficiente. Interior em couro ou estofamento em tecido. A implementação específica do carro ainda não está determinada. Além do mais, o chassi pode ser usado para produzir várias implementações específicas. Mas ninguém quer o carro em sua forma atual. Esta é uma classe abstrata clássica : criar instâncias dela não faria sentido, então você não pode criá-las; a classe só faz sentido por causa dos muitos herdeiros de pleno direito que serão criados com base nela.

"Isso é fácil o suficiente."

Mas pode haver analogias ainda mais abstratas. Mais como interfaces com alguns métodos implementados. Por exemplo, considere um intérprete profissional . Sem especificar os idiomas de origem e destino, temos um « tradutor abstrato ». Ou considere um guarda-costas. Podemos saber que ele domina as artes marciais e pode proteger seu cliente. Mas quais artes marciais e como ele vai proteger o cliente são "detalhes de implementação" de cada guarda-costas específico.

Vejamos um exemplo:

código Java Descrição
abstract class BodyGuard
{
 abstract void applyMartialArts(Attacker attacker);

 void shoot(Attacker attacker)
 {
    gun.shoot(attacker);
 }

 void saveClientLife(Attacker attacker)
 {
  if (attacker.hasGun())
     shoot(attacker);
  else
     applyMartialArts(attacker);
 }
}
A classe BodyGuard determina como lidar com um ataque: atirar ou usar artes marciais.

No entanto, a arte marcial específica não é especificada, embora tenhamos certeza de que a habilidade existe.

Podemos criar vários guarda-costas diferentes (herdando esta classe). Todos eles poderão proteger o cliente e atirar no atacante.

"Você está certo. É muito parecido com uma interface com alguns métodos implementados."

"Sim, esse tipo de classe abstrata é comum entre as classes Java SE padrão."

3
Tarefa
Núcleo do Java, nível 3, lição 3
Bloqueado
Code entry
Your attention, please! Now recruiting code entry personnel for CodeGym. Turn up your focus, let your fingers relax, read the code, and then... type it into the appropriate box. Code entry is far from a useless exercise, though it might seem so at first glance: it allows a beginner to get used to and remember syntax (modern IDEs seldom make this possible).
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION