Classe abstrata em Java – com exemplos
Publicados: 2022-06-24A abstração de dados é a técnica de ocultar certas informações e exibir apenas os detalhes necessários para os usuários. Essa abstração de dados pode ser obtida de duas maneiras, classe abstrata e interfaces.
O que é uma classe abstrata em Java?
Uma classe abstrata em Java é uma classe restrita encapsulada ou declarada com a palavra-chave abstract. Uma classe abstrata pode ter métodos abstratos e não abstratos. Ele não pode ser usado para criar um objeto. Para acessar uma classe abstrata, ela deve ser herdada de outra classe.
Aprenda cursos de desenvolvimento de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Regras da aula abstrata
- Uma classe abstrata só pode ser declarada dentro de uma palavra-chave abstrata.
- Ele pode conter métodos abstratos e não abstratos.
- Também pode ter métodos finais.
- Nunca pode ser instanciado.
- Construtores e métodos estáticos também podem ser usados.
Exemplo de uma classe abstrata:
classe abstrata B{}
Um método abstrato em Java
Este método pode ser usado apenas em uma classe abstrata e não contém um corpo. O corpo será fornecido pela subclasse herdada.
Um exemplo de um método abstrato é:
abstract void printStatus(); //sem corpo e resumo do método
Exemplo de classe Java Abstract com um método abstrato
No exemplo a seguir, o carro é uma classe abstrata com um método abstrato, run. A implementação é fornecida pela classe Audi.
classe abstrata Carro{
execução abstrata void();
}
classe Audi4 estende Bike{
void run(){System.out.println(“funcionando bem”);}
public static void main(String args[]){
Carro obj = new Audi4();
obj.run();
}
}
A saída do programa será "funcionando bem".
Na maioria dos casos, a classe de implementação permanece desconhecida (abstração de dados), e um objeto da classe de implementação é obtido através do método de fábrica.
Um método que retorna a instância da classe é chamado de método de fábrica.
Exemplo de classe abstrata Java com o método Factory
No exemplo a seguir, criando a instância de uma classe quadrada, o método draw() da classe Square é iniciado.
classe abstrata Forma{
abstrato vazio desenhar();
}
//No cenário real, a implementação é fornecida por outros, ou seja, desconhecida pelo usuário final
class Square estende Shape{
void draw(){System.out.println(“desenhando Quadrado”);}
}
class Circle1 estende Shape{
void draw(){System.out.println(“desenhando hexágono”);}
}
//Em cenário real, o método é chamado pelo programador ou usuário
class TestAbstração1{
public static void main(String args[]){
Shape s=new Circle1();//Em um cenário real, o objeto é fornecido através do método, por exemplo, método getShape()
s.desenhar();
}
}
A saída do programa acima será “desenhando hexágono”.
Cursos e artigos populares sobre engenharia de software
Programas populares | |||
Programa PG Executivo em Desenvolvimento de Software - IIIT B | Programa de Certificado Blockchain - PURDUE | Programa de Certificado de Segurança Cibernética - PURDUE | Mestrado em Ciência da Computação - IIIT B |
Outros artigos populares | |||
Salário de Engenheiro de Nuvem nos EUA 2021-22 | Salário do AWS Solution Architect nos EUA | Salário de desenvolvedor back-end nos EUA | Salário de Desenvolvedor Front-End nos EUA |
Salário de desenvolvedor web nos EUA | Perguntas da entrevista do Scrum Master em 2022 | Como iniciar uma carreira em segurança cibernética em 2022? | Opções de carreira nos EUA para estudantes de engenharia |
Quando uma classe abstrata deve ser usada em Java?
Abaixo estão alguns cenários em que uma classe abstrata pode ser usada:
- Ao tentar introduzir o conceito de herança no código (para compartilhar código entre várias classes relevantes) usando métodos comuns de uma classe base.
- Quando os requisitos são específicos e os detalhes de implementação estão incompletos.
- Quando as classes usadas para estender uma classe abstrata têm vários campos ou métodos comuns que exigem modificadores não públicos.
- Quando métodos não finais ou não estáticos são usados para modificar o estado do objeto.
Quando usar uma interface em Java para abstração?
Os cenários a seguir exigem uma interface Java para obter a abstração:
- Para suportar funcionalidades de heranças múltiplas
- Para obter um acoplamento solto
Declarando uma interface
A interface deve ser declarada apenas pela palavra-chave interface. Isso resulta em abstração total para que todos os métodos de herança sejam declarados em um corpo vazio e todos os campos se tornem públicos, estáticos e finais como padrão. A classe que implementa a interface deve implementar todos os métodos declarados na interface.
Exemplo de interface Java
No exemplo abaixo, a interface imprimível possui apenas um método cuja implementação é fornecida na classe A6.
interface imprimível{
void imprimir();
}
classe A6 implementa imprimível{
public void print(){System.out.println(“Bem-vindo”);}
public static void main(String args[]){
A6 obj = new A6();
obj.print();
}
}
A saída do programa será
Bem-vindo.
Exemplo 2:
interface Banco{
float taxaDeJuros();
}
classe BOI implementa Banco{
public float rateOfInterest(){return 8.5f;}
}
classe CUB implementa Banco{
public float rateOfInterest(){return 9.2f;}
}
class TestInterface2{
public static void main(String[] args){
Banco b=novo BOI();
System.out.println(“ROI: “+b.rateOfInterest());
}}
A saída do programa acima será
ROI: 8,5
Vantagens da abstração em Java
- Acoplamento fraco: A abstração em Java ajuda no acoplamento fraco, mitigando as entidades dependentes em um nível exponencial.
- Códigos reutilizáveis: A classe abstrata em Java é uma grande economia de tempo. O método abstrato pode ser chamado somente quando necessário. A classe abstrata evita reescrever os mesmos códigos, economizando tempo.
- Proteção de dados: A abstração de dados em Java ajuda a ocultar os detalhes confidenciais do código dos usuários. Ele ajuda a ocultar recursos importantes do projeto e exibir apenas os componentes essenciais.
- Resolução de problemas mais rápida: Com a ajuda da resolução de métodos dinâmicos, vários problemas e complicações podem ser resolvidos usando apenas um método abstrato.
Para saber mais sobre abstração de dados em Java e desenvolvimento de software, inscreva-se no Programa de Pós-Graduação Executiva em Desenvolvimento de Software oferecido pelo IIIT Bangalore em associação com upGrad.
O programa de Pós-Graduação Executiva em Desenvolvimento de Software é um programa online de 13 meses. O currículo é especialmente projetado para que os profissionais que trabalham se concentrem no aprendizado sem desistir de seus empregos. O currículo inclui projetos baseados na indústria e estudos de caso. Além disso, o programa tem mais de 10 sessões ao vivo de especialistas do setor para ajudar os candidatos a se manterem atualizados com as tendências atuais do setor.
Podemos ter uma classe abstrata sem nenhum método abstrato?
Sim. É possível ter uma classe abstrata sem nenhum método abstrato, pois ambas são técnicas independentes. Declarar uma classe abstrata implica que ela não pode ser instanciada sozinha e só pode ser feita com a ajuda de uma subclasse. Definir um método abstrato significa que o método está definido ou contido na subclasse.
Por que a abstração de dados é essencial?
Sim. É possível ter uma classe abstrata sem nenhum método abstrato, pois ambas são técnicas independentes. Declarar uma classe abstrata implica que ela não pode ser instanciada sozinha e só pode ser feita com a ajuda de uma subclasse. Definir um método abstrato significa que o método está definido ou contido na subclasse.
Como a abstração de dados é diferente da abstração de controle?
A abstração de dados é o processo de criação de tipos de dados complexos e complicados, mas destacando ou revelando apenas detalhes essenciais. A abstração de controle é o processo que lida com a parte de abstração de software. É o processo em que o programa é dividido ou simplificado, e detalhes indesejados das execuções do programa são ocultados. A abstração de controle é usada principalmente para gerar novas funcionalidades e combinar várias instruções de controle em uma única entidade.