Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Classes e Métodos Abstratos em Java: Guia Completo

Classes e Métodos Abstratos em Java

Este tutorial fornece uma exploração clara, orientada a exemplos, de classes e métodos abstratos em Java, e explica como a abstração é implementada.

Classe Abstrata em Java

Em Java, uma classe abstrata não pode ser instanciada. A palavra-chave abstract marca a classe como abstrata. Por exemplo,

// criar classe abstrata abstract class Linguagem { // campos e métodos } ... // tentar criar objeto Linguagem // lança erro Linguagem obj = new Linguagem();

Uma classe abstrata pode conter tanto métodos concretos (regulares) quanto métodos abstratos. Por exemplo,

abstract class Linguagem { // método abstrato abstract void metodo1(); // método regular void metodo2() { System.out.println("Este é método regular"); } }

Para mais sobre métodos regulares, veja Métodos em Java.


Método Abstrato em Java

Um método abstrato não tem corpo; declara um contrato que subclasses devem cumprir. É definido com a palavra-chave abstract, ex:

abstract void exibir();

Como não tem corpo, a declaração termina com ponto e vírgula. Se uma classe declara um método abstrato, a própria classe deve ser declarada abstrata, caso contrário o compilador lança erro:

// erro // classe deve ser abstrata class Linguagem { // método abstrato abstract void metodo1(); }

Exemplo: Classe e Método Abstrato em Java

Embora classes abstratas não possam ser instanciadas diretamente, subclasses concretas podem estendê-las e usar seus membros. Por exemplo,

abstract class Linguagem { public void exibir() { System.out.println("Esta é Programação Java"); } } class Main extends Linguagem { public static void main(String[] args) { Main obj = new Main(); obj.exibir(); } }

Saída

Esta é programação Java

Aqui, a classe abstrata Linguagem define um método concreto exibir(). A subclasse Main herda esse método e o invoca através de sua instância.


Implementando Métodos Abstratos

Quando uma classe abstrata declara um método abstrato, toda subclasse concreta deve fornecer implementação. Por exemplo,

abstract class Animal { abstract void fazerSom(); public void comer() { System.out.println("Posso comer."); } } class Cachorro extends Animal { public void fazerSom() { System.out.println("Au au"); } } class Main { public static void main(String[] args) { Cachorro c1 = new Cachorro(); c1.fazerSom(); c1.comer(); } }

Saída

Au au Posso comer.

A subclasse Cachorro implementa o método abstrato fazerSom(), enquanto herda o método concreto comer().

Nota: Se Cachorro não sobrescrever fazerSom(), ele próprio deve ser declarado abstrato.


Acessando Construtor de Classes Abstratas

Classes abstratas podem definir construtores como classes normais. Subclasses invocam o construtor da superclasse usando super(). Por exemplo,

abstract class Animal { Animal() { // lógica de inicialização } } class Cachorro extends Animal { Cachorro() { super(); // inicialização adicional } }

Lembre-se que super() deve ser a primeira instrução no construtor da subclasse.


Abstração em Java

Classes e métodos abstratos são as ferramentas primárias para alcançar abstração em Java. Abstração esconde detalhes de implementação desnecessários, apresentando apenas a interface essencial ao usuário. Isso simplifica sistemas complexos e promove flexibilidade.

Por exemplo, um freio de motocicleta realiza a mesma função de alto nível — desacelerar a moto — enquanto seu mecanismo interno pode diferir entre modelos.

Exemplo 3: Abstração em Java

abstract class Moto { abstract void frear(); } class MotoEsportiva extends Moto { public void frear() { System.out.println("Freio MotoEsportiva"); } } class MotoMontanha extends Moto { public void frear() { System.out.println("Freio MotoMontanha"); } } class Main { public static void main(String[] args) { MotoMontanha m1 = new MotoMontanha(); m1.frear(); MotoEsportiva s1 = new MotoEsportiva(); s1.frear(); } }

Saída:

Freio MotoMontanha Freio MotoEsportiva

Cada subclasse concreta fornece sua própria implementação de frear(), ilustrando como abstração desacopla interface de implementação.

Nota: Interfaces também podem ser usadas para alcançar abstração em Java.


Pontos-Chave para Lembrar

Java

  1. Dominando Classes e Métodos Abstratos em C#: Guia Prático
  2. Variáveis e Literais em Java: Guia Completo
  3. Classes e Objetos em Java: Guia Prático
  4. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  5. Operador instanceof em Java: Guia Completo
  6. Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
  7. Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
  8. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  9. Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
  10. Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos