A abstração é um dos principais conceitos da Programação Orientada a Objetos. A abstração define um modelo para criar um componente de aplicação. A implementação da abstração depende das funcionalidades e processos específicos da linguagem.
1. O que é Abstração?
A abstração é o processo de ocultar os detalhes internos de uma aplicação do mundo exterior. A abstração é usada para descrever coisas de forma simples. É usada para criar uma fronteira entre a aplicação e os programas cliente.
2. Abstração na Vida Real
A abstração está presente em quase todas as máquinas da vida real.
- Seu carro é um ótimo exemplo de abstração. Você pode iniciar um carro girando a chave ou pressionando o botão de partida. Você não precisa saber como o motor está sendo iniciado, quais componentes seu carro possui. A implementação interna do carro e a lógica complexa são completamente ocultas do usuário.
- Podemos aquecer nossa comida no Micro-ondas. Pressionamos alguns botões para definir o temporizador e o tipo de comida. Finalmente, obtemos uma refeição quente e deliciosa. Os detalhes internos do micro-ondas estão ocultos de nós. Foi-nos dado acesso à funcionalidade de maneira muito simples.
3. Abstração em OOPS
Os objetos são os blocos de construção da Programação Orientada a Objetos. Um objeto contém algumas propriedades e métodos. Podemos ocultá-los do mundo externo através de modificadores de acesso. Podemos fornecer acesso apenas para funções e propriedades necessárias para outros programas. Este é o procedimento geral para implementar a abstração em OOPS.
4. Quais são os diferentes tipos de abstração?
Há dois tipos de abstração.
- Abstração de Dados
- Abstração de Processo
4.1) Abstração de Dados
Quando os dados do objeto não são visíveis para o mundo exterior, cria-se a abstração de dados. Se necessário, o acesso aos dados do objeto é fornecido por meio de alguns métodos.

4.2) Abstração de Processo
Não é necessário fornecer detalhes sobre todas as funções de um objeto. Quando ocultamos a implementação interna das diferentes funções envolvidas em uma operação do usuário, cria-se uma abstração de processo.

5. Abstração em Java
A abstração em Java é implementada por meio de interfaces e classes abstratas. Elas são usadas para criar uma implementação base ou contrato para as classes de implementação reais. Carro.java: Interface base ou classe abstrata
package com.journaldev.oops.abstraction;
public interface Car {
void turnOnCar();
void turnOffCar();
String getCarType();
}
CarroManual.java, CarroAutomatico.java: classes de implementação do Carro.
package com.journaldev.oops.abstraction;
public class ManualCar implements Car {
private String carType = "Manual";
@Override
public void turnOnCar() {
System.out.println("turn on the manual car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the manual car");
}
@Override
public String getCarType() {
return this.carType;
}
}
package com.journaldev.oops.abstraction;
public class AutomaticCar implements Car {
private String carType = "Automatic";
@Override
public void turnOnCar() {
System.out.println("turn on the automatic car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the automatic car");
}
@Override
public String getCarType() {
return this.carType;
}
}
Programa do Usuário: Vamos olhar um programa de teste onde as funções do Carro serão utilizadas.
package com.journaldev.oops.abstraction;
public class CarTest {
public static void main(String[] args) {
Car car1 = new ManualCar();
Car car2 = new AutomaticCar();
car1.turnOnCar();
car1.turnOffCar();
System.out.println(car1.getCarType());
car2.turnOnCar();
car2.turnOffCar();
System.out.println(car2.getCarType());
}
}
O programa cliente só conhece o Carro e as funções que o Carro fornece. Os detalhes de implementação interna são ocultados do programa cliente. Referências: Wikipedia, Oracle Docs
Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops