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.