Java POO Básico
Herança
Herança é um mecanismo da POO que permite criar uma classe nova (subclasse) a partir de outra (superclasse), herdando seus atributos e métodos. Em Java, usamos a palavra-chave extends para estabelecer essa relação. A subclasse pode adicionar novos membros ou modificar o comportamento dos herdados.
Quando a subclasse precisa acessar o construtor ou métodos da superclasse, usamos super. Para sobrescrever um método, usamos a anotação @Override, que ajuda o compilador a verificar se realmente estamos sobrescrevendo corretamente. Se quisermos impedir que uma classe seja estendida ou que um método seja sobrescrito, usamos a palavra-chave final.
A herança promove reuso de código e criação de hierarquias, mas deve ser usada com moderação. Prefira composição sobre herança quando a relação não for claramente "é um".
Pontos-chave
extendscria uma subclasse que herda membros públicos e protegidos da superclasse.superchama o construtor ou métodos da superclasse.@Overrideindica que um método está sobrescrevendo um método da superclasse.finalem uma classe impede que ela seja estendida; em um método, impede sobrescrita.
// Superclasse
class Animal {
protected String nome;
public Animal(String nome) {
this.nome = nome;
}
public void emitirSom() {
System.out.println(nome + " faz um som genérico.");
}
}
// Subclasse que estende Animal
class Cachorro extends Animal {
public Cachorro(String nome) {
super(nome); // chama o construtor da superclasse
}
@Override
public void emitirSom() {
System.out.println(nome + " late: Au au!");
}
}
// Classe final não pode ser estendida
final class Gato extends Animal {
public Gato(String nome) {
super(nome);
}
@Override
public void emitirSom() {
System.out.println(nome + " mia: Miau!");
}
}
public class ExemploHeranca {
public static void main(String[] args) {
Animal a = new Animal("Bicho");
Cachorro c = new Cachorro("Rex");
Gato g = new Gato("Mimi");
a.emitirSom();
c.emitirSom();
g.emitirSom();
}
}