logo

Classe abstrata em Java

Uma classe que é declarada com a palavra-chave abstract é conhecida como classe abstrata em Java . Pode ter métodos abstratos e não abstratos (método com corpo).

Antes de aprender a classe abstrata Java, vamos primeiro entender a abstração em Java.

obter a data atual em java

Abstração em Java

Abstração é um processo de ocultar os detalhes da implementação e mostrar apenas a funcionalidade ao usuário.

Outra forma, mostra apenas coisas essenciais ao usuário e oculta os detalhes internos, por exemplo, o envio de SMS onde você digita o texto e envia a mensagem. Você não conhece o processamento interno sobre a entrega da mensagem.

A abstração permite que você se concentre no que o objeto faz em vez de como faz.

Maneiras de alcançar a abstração

Existem duas maneiras de obter abstração em java

  1. Aula abstrata (0 a 100%)
  2. Interface (100%)

Classe abstrata em Java

Uma classe declarada como abstrata é conhecida como classe abstrata . Pode ter métodos abstratos e não abstratos. Ele precisa ser ampliado e seu método implementado. Não pode ser instanciado.

Pontos para lembrar

  • Uma classe abstrata deve ser declarada com uma palavra-chave abstrata.
  • Pode ter métodos abstratos e não abstratos.
  • Não pode ser instanciado.
  • Pode ter construtores e métodos estáticos também.
  • Pode ter métodos finais que forçarão a subclasse a não alterar o corpo do método.
Regras para classe Java Abstract

Exemplo de classe abstrata

 abstract class A{} 

Método abstrato em Java

Um método que é declarado como abstrato e não possui implementação é conhecido como método abstrato.

Exemplo de método abstrato

 abstract void printStatus();//no method body and abstract 

Exemplo de classe abstrata que possui um método abstrato

Neste exemplo, Bike é uma classe abstrata que contém apenas um método abstrato executado. Sua implementação é fornecida pela classe Honda.

 abstract class Bike{ abstract void run(); } class Honda4 extends Bike{ void run(){System.out.println('running safely');} public static void main(String args[]){ Bike obj = new Honda4(); obj.run(); } } 
Teste agora
 running safely 

Entendendo o cenário real da aula Abstract

Neste exemplo, Shape é a classe abstrata e sua implementação é fornecida pelas classes Rectangle e Circle.

Principalmente, não sabemos sobre a classe de implementação (que está oculta para o usuário final), e um objeto da classe de implementação é fornecido pelo método de fábrica .

A método de fábrica é um método que retorna a instância da classe. Aprenderemos sobre o método de fábrica mais tarde.

Neste exemplo, se você criar a instância da classe Rectangle, o método draw() da classe Rectangle será invocado.

Arquivo: TestAbstraction1.java

 abstract class Shape{ abstract void draw(); } //In real scenario, implementation is provided by others i.e. unknown by end user class Rectangle extends Shape{ void draw(){System.out.println('drawing rectangle');} } class Circle1 extends Shape{ void draw(){System.out.println('drawing circle');} } //In real scenario, method is called by programmer or user class TestAbstraction1{ public static void main(String args[]){ Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method s.draw(); } } 
Teste agora
 drawing circle 

Outro exemplo de classe Abstract em java

Arquivo: TestBank.java

 abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 8;} } class TestBank{ public static void main(String args[]){ Bank b; b=new SBI(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); b=new PNB(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); }} 
Teste agora
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Classe abstrata com construtor, membro de dados e métodos

Uma classe abstrata pode ter um membro de dados, um método abstrato, um corpo de método (método não abstrato), um construtor e até mesmo um método main().

rujira banerjee

Arquivo: TestAbstraction2.java

 //Example of an abstract class that has abstract and non-abstract methods abstract class Bike{ Bike(){System.out.println('bike is created');} abstract void run(); void changeGear(){System.out.println('gear changed');} } //Creating a Child class which inherits Abstract class class Honda extends Bike{ void run(){System.out.println('running safely..');} } //Creating a Test class which calls abstract and non-abstract methods class TestAbstraction2{ public static void main(String args[]){ Bike obj = new Honda(); obj.run(); obj.changeGear(); } } 
Teste agora
 bike is created running safely.. gear changed 

Regra: Se houver um método abstrato em uma classe, essa classe deverá ser abstrata.

 class Bike12{ abstract void run(); } 
Teste agora
 compile time error 

Regra: Se você estiver estendendo uma classe abstrata que possui um método abstrato, você deverá fornecer a implementação do método ou tornar esta classe abstrata.


Outro cenário real de classe abstrata

A classe abstrata também pode ser usada para fornecer alguma implementação do interface . Nesse caso, o usuário final não pode ser forçado a substituir todos os métodos da interface.

Nota: Se você é iniciante em Java, aprenda primeiro a interface e pule este exemplo.

 interface A{ void a(); void b(); void c(); void d(); } abstract class B implements A{ public void c(){System.out.println('I am c');} } class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Teste agora
 Output:I am a I am b I am c I am d