13.3. Herança e Polimorfismo em Java: Sobrescrita de Métodos (Method Overriding)

Página 87

13.3 Herança e Polimorfismo em Java: Sobrescrita de Métodos (Method Overriding)

A herança é um dos pilares fundamentais da Programação Orientada a Objetos (POO), permitindo a criação de novas classes com base em classes existentes. Em Java, isso é feito com a palavra-chave extends. A herança promove a reutilização de código e a criação de uma hierarquia de classes. Associada à herança, temos o conceito de polimorfismo, que, em sua forma mais simples, pode ser entendido como a capacidade de um objeto ser referenciado de várias formas.

O polimorfismo se manifesta de duas maneiras principais em Java: sobrecarga de métodos (method overloading) e sobrescrita de métodos (method overriding). Nesta seção, focaremos na sobrescrita de métodos, que é um mecanismo pelo qual uma subclasse oferece uma implementação específica de um método que já é fornecido por uma de suas superclasses.

Entendendo a Sobrescrita de Métodos

A sobrescrita de métodos ocorre quando uma subclasse em Java redefine um método da superclasse. Para que um método seja sobrescrito, ele deve ter a mesma assinatura na subclasse e na superclasse, ou seja, o mesmo nome e os mesmos parâmetros. A sobrescrita é uma ferramenta poderosa que permite que uma classe herde métodos de uma classe pai e ainda assim modifique seu comportamento conforme necessário.

Regras para Sobrescrita de Métodos

Existem algumas regras importantes que devem ser seguidas para sobrescrever um método corretamente em Java:

  • O método na subclasse deve ter o mesmo nome, tipo de retorno (ou subtipo) e parâmetros que o método na classe pai.
  • A visibilidade do método sobrescrito na subclasse não pode ser mais restritiva do que a visibilidade do método da classe pai.
  • O método sobrescrito não pode lançar exceções verificadas mais amplas do que as lançadas pelo método da classe pai.
  • Métodos marcados como final não podem ser sobrescritos.
  • Métodos estáticos não são sobrescritos, mas sim ocultados, o que é um conceito diferente.

Exemplo de Sobrescrita de Métodos

Vamos considerar um exemplo simples para ilustrar a sobrescrita de métodos:


class Animal {
    public void emitirSom() {
        System.out.println("O animal emite um som.");
    }
}

class Cachorro extends Animal {
    @Override
    public void emitirSom() {
        System.out.println("O cachorro late: Au! Au!");
    }
}

No exemplo acima, a classe Cachorro sobrescreve o método emitirSom da classe Animal. Quando um objeto do tipo Cachorro chama o método emitirSom, a implementação sobrescrita é executada, fazendo com que seja impresso "O cachorro late: Au! Au!" em vez de "O animal emite um som.".

Uso da Anotação @Override

A anotação @Override é usada acima do método sobrescrito. Embora não seja obrigatória, é uma boa prática usá-la porque ela informa ao compilador que você pretende sobrescrever um método da superclasse. Se o método correspondente não for encontrado na superclasse, o compilador gera um erro, evitando possíveis erros de digitação ou assinatura de método.

Benefícios da Sobrescrita de Métodos

A sobrescrita de métodos permite que os desenvolvedores criem sistemas mais flexíveis e reutilizáveis. Ela oferece os seguintes benefícios:

  • Comportamento Específico: As subclasses podem definir um comportamento específico que é diferente do comportamento definido pela superclasse.
  • Polimorfismo: O mesmo método pode ter várias implementações diferentes, dependendo do objeto que está sendo referenciado.
  • Manutenção de Código Simplificada: Se um método da superclasse for modificado, apenas as sobrescritas que dependem da implementação original precisarão ser alteradas.

Considerações Finais

A sobrescrita de métodos é um recurso essencial na POO e em Java. Ela permite que os desenvolvedores criem classes mais especializadas que se comportam de maneira apropriada, mantendo a consistência e a reutilização de código. Ao entender e aplicar corretamente a sobrescrita de métodos, você pode criar sistemas robustos e facilmente extensíveis.

Por fim, é importante lembrar que a sobrescrita de métodos é apenas um aspecto do polimorfismo em Java. Outros aspectos, como a sobrecarga de métodos e a implementação de interfaces, também desempenham um papel crucial na criação de aplicações complexas e flexíveis. Com a prática e a compreensão desses conceitos, você estará bem equipado para aproveitar o poder da POO em seus projetos Java.

Now answer the exercise about the content:

Qual das seguintes afirmações sobre a sobrescrita de métodos em Java está correta?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

8813.4. Herança e Polimorfismo em Java: Uso de 'super' para acessar membros da superclasse

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text