Classe abstrata em Java e métodos [com exemplos]
Publicados: 2021-06-18O artigo a seguir discutirá as propriedades da abstração em Java e como isso pode ser alcançado por meio de classes abstratas e métodos abstratos. Estaremos explorando os recursos de classes abstratas e interfaces em java.
Índice
Abstração
Um dos conceitos importantes de Java é a abstração. É a propriedade pela qual o usuário é exibido apenas com os detalhes importantes de um programa. Todas as partes não essenciais são mantidas escondidas. O processo pode ser explicado através do exemplo de um e-mail. Os remetentes enviam um e-mail que é entregue ao destinatário. A única informação conhecida pelo remetente é que o e-mail foi enviado. O processo em segundo plano de envio do e-mail está oculto para os usuários. Semelhante é o processo na Programação Orientada a Objetos (OOP), onde os elementos essenciais são exibidos ao usuário enquanto as partes não essenciais são ocultadas. O usuário não tem informações sobre o processo de implementação, mas apenas a funcionalidade é conhecida. Esse mecanismo é conhecido como abstração onde apenas as características essenciais de um objeto são mostradas, ignorando as demais características.
Em Java, a abstração é obtida por meio de classes e interfaces abstratas.
Classe abstrata em Java
A palavra-chave “abstract” é usada para classes e métodos abstratos em Java. A classe abstrata tem a palavra-chave abstract em sua declaração.
A sintaxe de uma classe abstrata Java é:
classe abstrata class_name
{
public abstract void the_abstractMethod();
public void the_normalMethod()
{
#corpo do método
}
}
A sintaxe acima mostra que métodos normais e abstratos podem estar contidos em uma classe abstrata.
Algumas propriedades das classes abstratas são:
- Os métodos abstratos podem ou não estar presentes na classe abstrata Java .
- A presença de pelo menos um método abstrato em uma classe torna a classe uma classe abstrata.
- Uma classe abstrata não pode ter nenhum objeto e, portanto, não pode ser instanciada diretamente.
- Uma classe abstrata só pode ser usada se for herdada de outra classe e implementar os métodos abstratos.
- As implementações adequadas dos métodos abstratos são necessárias ao herdar uma classe abstrata.
- Ambos os métodos regulares e abstratos podem estar presentes em uma classe abstrata Java .
- Construtores parametrizados podem estar presentes em uma classe abstrata. Além disso, uma classe abstrata sempre contém um construtor padrão.
Métodos abstratos
Métodos abstratos são aqueles tipos de métodos que não requerem implementação para sua declaração. Esses métodos não têm um corpo, o que significa que não há implementação. Algumas propriedades de um método abstrato são:
- Um método abstrato em Java é declarado através da palavra-chave “abstract”.
- Enquanto a declaração do método abstrato, a palavra-chave abstract deve ser colocada antes do nome do método.
- Não há corpo em um método abstrato, apenas a assinatura do método está presente.
- Um método abstrato em Java não tem chaves, mas o final do método terá um ponto e vírgula (;)
Método duplo abstrato (duplo n1, duplo n2);
- Qualquer classe que contenha um método abstrato deve ser declarada como uma classe abstrata. Embora o oposto possa não ser verdade, não é necessário que uma classe abstrata tenha um método abstrato.
- A herança de uma classe abstrata por uma classe regular requer a implementação de todos os métodos abstratos na classe pai.
Exemplo de um método abstrato
classe abstrata pública carro
{
modelo de string privado;
cor da string privada;
ano int privado;
public abstract double computePrice();
}
Se as classes derivadas não implementarem os métodos abstratos, isso resultaria em classes abstratas que não podem ser instanciadas.
Alguns não podem ser usados com a palavra-chave abstract em Java.
- final
- nativo abstrato
- abstrato estático
- abstrato privado
- resumo sincronizado
- resumo estritofp
Um código mostrando o uso de um método abstrato em Java é mostrado abaixo.
Fonte
A saída do código é:
Interfaces Java
Além das classes abstratas e métodos abstratos, Java usa interfaces para obter abstração. Quando métodos relacionados são agrupados em corpos vazios, eles são chamados de interface. A interface é semelhante a uma classe abstrata, pois é o agrupamento de métodos abstratos. Quando uma classe implementa a interface, todos os métodos abstratos dentro da interface são herdados. A interface também pode conter métodos padrão, constantes e métodos estáticos. Os corpos de métodos apenas dos métodos padrão e estáticos estão presentes. Uma herança e uma classe podem ser escritas de maneira semelhante, mas uma classe pode descrever os atributos e o comportamento de um objeto. Enquanto no caso de uma interface apenas os comportamentos de um objeto estão presentes, eles são implementados pela classe.
Uma classe deve definir todos os métodos da interface que ela implementa. Apenas para uma classe abstrata, os métodos não precisam ser definidos pela classe.
Uma interface é semelhante a uma classe abstrata Java das seguintes maneiras:
- Qualquer número de métodos pode estar contido em uma interface.
- A extensão .java é usada para escrever uma interface em um arquivo. O nome do arquivo deve corresponder ao nome da interface.
- O arquivo .class contém o código de byte de uma interface.
- As interfaces aparecem em pacotes. O arquivo de bytecode de uma interface está presente em um diretório com o mesmo nome do nome do pacote.
Uma interface é diferente de uma classe abstrata Java das seguintes maneiras:
- A interface não pode ser instanciada.
- Não há construtores em uma interface.
- A interface contém apenas métodos abstratos.
- Nenhum campo de instância está presente em uma interface. Um campo deve ser declarado como estático e final se tiver que aparecer em uma interface.
- Apenas uma classe pode implementar uma interface, mas não pode ser estendida.
- Uma interface pode estender várias interfaces.
Aprenda cursos 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.
Propriedades de uma interface
- Não há necessidade de declarar uma interface como abstrata por meio da palavra-chave abstract , pois ela é implicitamente abstrata.
- Palavras -chave abstratas não são necessárias para declarar os métodos como abstratos, pois são implicitamente abstratos.
- Todos os métodos em uma interface são implicitamente públicos.
Como declarar uma interface?
A palavra-chave “interface” é usada para declarar uma interface. A abstração total é fornecida através do uso de uma interface. Por padrão, todos os métodos dentro de uma interface são abstratos e públicos. Isso significa que não há nenhum dos métodos em uma interface e todos os campos são estáticos, públicos e finais.
Sintaxe de uma interface:
Interface name_of_the_interface {
# declara campos
# declara métodos abstratos
}
Por exemplo, interface Player
{
idade int final = 40;
int calculo();
}
Como implementar uma interface?
Para implementar uma interface, a palavra-chave ' implements' é usada. Mais de uma interface pode ser implementada por uma classe. Nesses casos, a palavra-chave ' implements' é seguida por uma lista de interfaces separadas por uma vírgula. A palavra-chave é usada na declaração de classe.
Um exemplo de implementação da interface é mostrado abaixo:
classe Maruti implementa Carro
Um exemplo de código mostrando a implementação de uma interface em Java é mostrado abaixo.
Fonte
O código gera a seguinte saída:
Um código que aplica a implementação de várias interfaces é mostrado abaixo.
Fonte
O código gera a seguinte saída:
Algum texto…
Algum outro texto...
Por que a interface é usada?
- As interfaces são usadas para alcançar a abstração total.
- Heranças múltiplas em Java podem ser alcançadas através do uso de herança, pois Java não suporta heranças múltiplas.
- O acoplamento fraco pode ser obtido através do uso de uma interface.
- Através do uso de abstração de implementação em java pode ser alcançado.
Embora a abstração em Java possa ser alcançada através da classe abstrata Java, as interfaces são usadas porque contêm variáveis finais, públicas e estáticas. No entanto, variáveis não finais podem estar presentes em uma classe abstrata.
Se tanto a interface Java quanto a classe abstrata Java são usadas para obter a abstração, quando uma interface e uma classe abstrata devem ser usadas?
- Uma classe abstrata é usada quando o usuário precisa definir um template para um grupo de subclasses.
- Uma interface é usada quando um usuário precisa definir uma função para outras classes.
Algumas vantagens da abstração são:
- A complexidade do programa é reduzida.
- Há menos chances de duplicação de código aumentando a reutilização.
- A segurança de um programa é aumentada através do uso de abstração, pois apenas alguns detalhes são fornecidos ao usuário.
Conclusão
O artigo discutiu o conceito detalhado de abstração em Java, que é uma técnica de ocultar informações não essenciais do usuário. Em Java, a abstração é obtida por meio de classes e interfaces abstratas. Uma abstração de 100% é fornecida pelas interfaces, enquanto uma abstração parcial é fornecida pelas classes abstratas. O artigo mencionou ainda quando usar uma interface e quando uma classe abstrata deve ser usada. Ele também listou as semelhanças de uma interface com a classe abstrata Java e também as diferenças. Sem o conhecimento necessário de ambos os conceitos resultará em um código cheio de falhas.
Se você estiver ainda mais interessado em aprender mais e implementar os conceitos em problemas da vida real, você pode conferir o curso de Mestrado em Ciência da Computação oferecido pelo upGrad e IIIT -Bangalore reconhecido pela Liverpool John Moores University . O curso foi desenvolvido para profissionais iniciantes (21-45 anos de idade), oferecendo mais de 500 horas de treinamento com os principais especialistas do setor e faculdades de engenharia de software. Mais detalhes do curso podem ser conferidos na página oficial do upGrad.