Publicado em

Mais sobre a Herança em Java

Partilhar:

Introdução

Enquanto a primeira introdução à herança em Java ajuda-nos a compreender os seus conceitos fundamentais, neste artigo vamos aprofundar-nos em tópicos mais avançados como a sobreposição de métodos e a abstração.

Sobreposição de Métodos

Quando uma subclasse herda de uma superclasse, ela também herda os seus métodos. No entanto, em muitos casos, queremos que a subclasse tenha uma implementação diferente para um ou mais desses métodos. Isso é conseguido através da sobreposição de métodos, usando a anotação @Override.

Vantagens da Sobreposição de Métodos:

  1. Flexibilidade: Permite que subclasse forneça uma implementação específica de um método que já é fornecido pela sua superclasse.
  2. Reutilização de Código: Mesmo herdando um método de uma superclasse, podemos ajustá-lo às necessidades específicas da subclasse.
  3. Melhoria na Legibilidade: Ao usar a anotação @Override, sinalizamos claramente que o método está sendo sobreposto, tornando o código mais compreensível.
package com.caffeinealgorithm.programaremjava;

public class MaisSobreAHeranca {
  public void Run() {
    var pessoa = new Filho();
    pessoa.informacao();
    pessoa.comidaPreferida();

    /*
      Nome: Nelson Silva
      Idade: 28
      A minha comida preferida é lasanha.
    */
  }
}

class Pai {
  protected String ultimoNome = "Silva";

  public void comidaPreferida() {
    System.out.println("A minha comida preferida é arroz de marisco.");
  }
}

class Filho extends Pai {
  private String primeiroNome = "Nelson";
  private int idade = 28;

  public void informacao() {
    System.out.printf("Nome: %s %s\n", primeiroNome, ultimoNome);
    System.out.printf("Idade: %d\n", idade);
  }

  @Override
  public void comidaPreferida() {
    System.out.println("A minha comida preferida é lasanha.");
  }
}

Abstração e Métodos Abstratos

Mencionou-se brevemente sobre o termo "abstract". Este é um conceito importante em Java, permitindo criar classes e métodos que não podem ser instanciados. São, essencialmente, modelos que outras classes devem seguir.

  1. Classes Abstratas: Não podem ser instanciadas diretamente. Servem como uma base para outras classes.
  2. Métodos Abstratos: São declarados na classe abstract mas não têm corpo. As subclasses devem fornecer a implementação destes métodos.

Exploraremos este tópico em detalhe num próximo artigo, garantindo um entendimento completo da abstração e como ela se integra à herança.

Conclusão

A herança, combinada com conceitos como sobreposição de métodos e abstração, faz da programação orientada a objetos uma ferramenta poderosa para criar software modular e reutilizável. Estes são apenas alguns dos conceitos avançados em Java, e continuar a explorá-los irá aprofundar ainda mais os seus conhecimentos.

Happy coding!