O que é classe abstrata em Java?

  • Classes abstratas são como qualquer outra classe normal em java. A principal diferença entre classe abstrata e classe normal é criar a classe abstrata necessária para usar a palavra-chave 'ABSTARCT'. É uma separação de implementação de classe.
  • Eles costumavam definir os recursos muito comuns de suas subclasses. Esse tipo de classe é chamado de classe Abstract.
  • Mais importante, não podemos criar um objeto de uma classe abstrata.
  • As classes abstratas podem conter métodos abstratos e não abstratos. Eles não podem conter um corpo do método abstrato, que só pode ser fornecido pela subclasse. Se a subclasse não estiver fornecendo a implementação do método abstrato, será necessário explicá-lo ABSTRATO.
  • Em outras palavras, se uma classe contém um método abstrato, ela deve se definir como ABSTARCT.
  • Usando classes abstratas, podemos agrupar várias classes java, além de otimizar o código, tornar o código mais legível e reduzir a redundância. Ele também fornece um modelo para futuras aulas.

Sintaxe da Classe Abstrata em Java

Como a classe abstrata funciona em Java?

  • Uma classe abstrata possui um método abstrato e um método não abstrato, isto é, um método abstrato sem corpo e eles também podem ter métodos com implementação.
  • Uma classe abstrata é usada para fornecer o recurso mais comum que é específico para diferentes classes. As subclasses podem fornecer uma implementação diferente desses métodos abstratos de acordo com suas necessidades ou exigências.
  • Não podemos criar um objeto de uma classe abstrata usando o operador 'new', mas ainda podemos definir seu construtor que só pode ser invocado no construtor de sua subclasse. O construtor da subclasse pode acessar um construtor da superclasse para inicializar sua variável que pode estar sendo usada na subclasse para requisitos adicionais.

Exemplos de classe abstrata em Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Resultado:

No exemplo acima, temos HUMAN como uma classe abstrata que define as necessidades, gostos e desgostos comuns de um humano. Existem diferentes tipos de humanos com diferentes gostos e desgostos. Portanto, todo ser humano pode fornecer uma implementação específica do que gosta. Isso será específico apenas para eles.

A principal vantagem da classe abstrata é que temos uma implementação específica de métodos de acordo com um requisito que também reduz a redundância, aumenta a legibilidade do código, oculta a implementação de métodos e, portanto, fornece abstração parcial.

Podemos ter mais um exemplo para entender quando devemos usar as classes Abstract.

  • Devemos usar a classe abstrata quando queremos compartilhar funcionalidades comuns entre diferentes classes com implementação específica.
  • Nas classes abstratas, os campos não devem ser estáticos e finais, também podemos definir métodos concretos como privados, públicos e protegidos.

Digamos que temos uma classe Animal. Existem variedades de animais que temos na Terra e todos eles são diferentes um do outro em algum sentido. Ele conterá todos os recursos comuns de todos.

Agora, essa classe Animal não pode ter métodos específicos para cada animal. Portanto, pelo conceito de classe Abstract, podemos implementar essa funcionalidade sem código redundante.

Todos os animais têm um tipo diferente de som, hábitos, etc. Por exemplo, cachorro, gato, elefante e lanche, todos eles têm um som diferente. Portanto, para isso, podemos ter um método genérico na classe pai, através do qual todas as outras subclasses ou classes filho podem fornecer sua própria implementação específica.

Na classe pai, ou seja, Animal, temos um método abstrato genérico chamado Sound (). Portanto, toda classe filho precisa substituir esse método e fornecer sua própria implementação específica.

Classe abstrata e interface?

  • Classe abstrata e interface são usadas para obter abstração em java. Uma classe abstrata fornece abstração parcial, enquanto a interface fornece 100% ou abstração completa.
  • Por padrão, as variáveis ​​em uma interface são finais. Mas a classe abstrata também contém uma variável não final. Da mesma forma, a classe abstrata também pode ter uma variável estática e não estática. Mas a interface conterá apenas uma variável final e estática.
  • As variáveis ​​de membro de uma classe abstrata podem ser privadas, públicas, protegidas, mas, por padrão, são públicas no caso da interface.
  • Uma classe abstrata pode estender outra classe Java e implementar várias interfaces, mas uma interface só pode estender outra interface. Uma classe abstrata pode fornecer uma implementação de uma interface, mas uma interface não pode fazê-lo.
  • Usamos implementos e estendemos a palavra-chave para implementar e estender a interface e as classes, respectivamente.
  • Através do método, podemos modificar ou acessar as variáveis ​​não estáticas e não finais de uma classe abstrata.

Conclusão

  • Classe abstrata usada para fornecer abstração parcial. Uma classe abstrata não pode ser instanciada usando a palavra-chave NEW.
  • Um método Abstract não tem corpo e sempre termina com ponto e vírgula (;).
  • A classe Abstract contém métodos abstratos e não abstratos.
  • A subclasse de uma superclasse abstrata, precisa fornecer uma implementação de todo método abstrato, se não fornecer, deve se declarar como classe abstrata.
  • Uma subclasse pode ser abstrata mesmo que a superclasse seja concreta.
  • Uma classe não abstrata não pode conter métodos abstratos. Além disso, o método abstrato não é estático.
  • Portanto, podemos dizer que as classes abstratas também contêm métodos abstratos e concretos, de modo que não podem fornecer 100% de abstração. É um processo de ocultar a lógica complexa do usuário final e mostra apenas os serviços. Uma subclasse pode ser abstrata, mesmo que sua superclasse seja concreta, e também pode ser usada como um tipo de dados.
  • Uma classe abstrata pode ter campos estáticos e métodos estáticos. Você pode usar esses membros estáticos com uma referência de classe.

Artigos recomendados

Este é um guia para a classe abstrata em Java. Aqui discutimos a sintaxe e os exemplos da classe abstrata em Java, juntamente com a classe abstrata e a interface. Você também pode consultar os seguintes artigos para saber mais -

  1. Interface Java vs Classe Abstrata
  2. BoxLayout em Java
  3. O que é o Java SE?
  4. O que é herança em Java?
  5. Como a Abstract Class funciona em PHP?
  6. Classe abstrata em C ++
  7. Guia do método estático em PHP
  8. Visão geral completa do método estático JavaScript