Herança

Em Java, a herança é um dos pilares fundamentais da programação orientada a objetos. Ela permite que uma classe herde atributos e métodos de outra classe, formando uma hierarquia de classes. Neste artigo, vamos explorar o conceito de herança em Java, entender como funciona e examinar exemplos práticos para ilustrar esses conceitos.

O que é Herança?

A herança é um mecanismo que permite a criação de uma nova classe com base em uma classe existente. A classe existente é chamada de classe base ou superclasse, enquanto a nova classe é chamada de classe derivada ou subclasse. A subclasse herda atributos e métodos da superclasse, permitindo a reutilização de código e a criação de hierarquias de classes.

Sintaxe Básica de Herança em Java

public class Superclasse {
    // Atributos e métodos da superclasse
}

public class Subclasse extends Superclasse {
    // Atributos e métodos adicionais da subclasse
}

Exemplo Prático de Herança

Vamos considerar um exemplo de herança onde temos uma classe Animal como superclasse e classes Cachorro e Gato como subclasses.

// Superclasse
public class Animal {
    // Atributos
    private String nome;
    
    // Construtor
    public Animal(String nome) {
        this.nome = nome;
    }
    
    // Método
    public void emitirSom() {
        System.out.println("O animal faz um som");
    }
}

// Subclasse 1
public class Cachorro extends Animal {
    // Construtor
    public Cachorro(String nome) {
        super(nome); // Chama o construtor da superclasse
    }
    
    // Método específico da subclasse
    public void latir() {
        System.out.println("O cachorro late");
    }
}

// Subclasse 2
public class Gato extends Animal {
    // Construtor
    public Gato(String nome) {
        super(nome); // Chama o construtor da superclasse
    }
    
    // Método específico da subclasse
    public void miar() {
        System.out.println("O gato mia");
    }
}

Neste exemplo, a classe Animal é a superclasse, e Cachorro e Gato são subclasses que herdam de Animal. As subclasses têm seus próprios métodos (latir e miar), além dos métodos herdados da superclasse (emitirSom).

Polimorfismo e Herança

O polimorfismo é outro conceito importante relacionado à herança. Ele permite que objetos de subclasses sejam tratados como objetos da superclasse. Isso significa que você pode usar uma variável da superclasse para se referir a objetos de qualquer subclasse.

public class Main {
    public static void main(String[] args) {
        Animal meuAnimal = new Cachorro("Rex");
        meuAnimal.emitirSom(); // Chama o método da subclasse Cachorro: "O cachorro late"
        
        meuAnimal = new Gato("Mittens");
        meuAnimal.emitirSom(); // Chama o método da subclasse Gato: "O gato mia"
    }
}

Neste exemplo, a variável meuAnimal pode se referir tanto a um objeto da classe Cachorro quanto a um objeto da classe Gato. Isso é possível devido à herança e ao polimorfismo.

A herança em Java é uma técnica poderosa para organizar e reutilizar código em hierarquias de classes. Ela permite que você crie relacionamentos entre classes, compartilhando comportamentos e atributos. O polimorfismo, juntamente com a herança, torna o código mais flexível e fácil de estender. Ao entender esses conceitos, você pode criar sistemas mais eficientes e modulares em Java.