Palavra-chave extends em Java

A palavra-chave extends em Java é usada para indicar que uma classe está herdando de outra classe ou que uma interface está estendendo outra interface. A herança em Java permite que uma classe herde os métodos e campos de outra classe, promovendo o reuso de código e a organização hierárquica entre classes.

Uso com Classes

Quando uma classe herda de outra, a classe filha (ou derivada) pode acessar os membros públicos e protegidos da classe pai (ou base), e também pode sobrescrever métodos para fornecer sua própria implementação.

Sintaxe

class ClassePai {
// Definições de métodos e atributos
}

class ClasseFilha extends ClassePai {
// Métodos e atributos adicionais
}

Exemplo

// Classe Pai
class Animal {
public void fazerSom() {
System.out.println("O animal faz um som");
}
}

// Classe Filha
class Cachorro extends Animal {
public void fazerSom() {
System.out.println("O cachorro late");
}
}

public class ExemploHeranca {
public static void main(String[] args) {
Cachorro dog = new Cachorro();
dog.fazerSom(); // Exibe "O cachorro late"
}
}

Explicação:

  • A classe Cachorro estende a classe Animal, o que significa que herda o método fazerSom().
  • A classe Cachorro sobrescreve o método fazerSom() com sua própria implementação.

Uso com Interfaces

A palavra-chave extends também é usada para estender interfaces. Quando uma interface estende outra, ela herda os métodos daquela interface. Diferente das classes, uma interface pode estender várias interfaces.

Sintaxe

interface InterfaceA {
void metodoA();
}

interface InterfaceB extends InterfaceA {
void metodoB();
}

Exemplo

interface Veiculo {
void iniciar();
}

interface Carro extends Veiculo {
void dirigir();
}

class Sedan implements Carro {
public void iniciar() {
System.out.println("Carro iniciado");
}

public void dirigir() {
System.out.println("Dirigindo o carro");
}
}

public class ExemploInterface {
public static void main(String[] args) {
Sedan meuCarro = new Sedan();
meuCarro.iniciar(); // Exibe "Carro iniciado"
meuCarro.dirigir(); // Exibe "Dirigindo o carro"
}
}

Explicação:

  • A interface Carro estende Veiculo, herdando o método iniciar().
  • A classe Sedan implementa Carro, e por isso precisa fornecer implementações para ambos os métodos iniciar() e dirigir().

Resumo

  • Palavra-chave: extends
  • Uso com Classes: Define herança de uma classe pai para uma classe filha. A classe filha herda os membros da classe pai.
  • Uso com Interfaces: Permite que uma interface herde outra interface.

A palavra-chave extends é fundamental para implementar o conceito de herança em Java, seja entre classes ou interfaces, promovendo a reutilização e a hierarquização do código.