11.12. Estrutura de classes e objetos em Java: Sobrecarga e Sobrescrita de Métodos

Página 70

11.12. Estrutura de Classes e Objetos em Java: Sobrecarga e Sobrescrita de Métodos

Java, sendo uma linguagem de programação orientada a objetos, oferece uma estrutura robusta para a definição de classes e objetos. Um conceito fundamental nesse contexto é o de métodos, que são essencialmente as ações que os objetos podem executar. A flexibilidade do uso de métodos é ampliada por dois conceitos importantes: sobrecarga (overloading) e sobrescrita (overriding) de métodos. Vamos explorar cada um desses conceitos em detalhes.

Sobrecarga de Métodos (Overloading)

A sobrecarga de métodos é um recurso que permite a um programador definir vários métodos com o mesmo nome dentro de uma classe, desde que eles tenham listas de parâmetros diferentes. A sobrecarga é útil quando você quer realizar a mesma operação de maneiras diferentes, dependendo dos argumentos passados para o método.


public class Calculadora {
    // Sobrecarga com dois parâmetros
    public int somar(int a, int b) {
        return a + b;
    }

    // Sobrecarga com três parâmetros
    public int somar(int a, int b, int c) {
        return a + b + c;
    }
}

No exemplo acima, a classe Calculadora tem dois métodos chamados somar. Um deles soma dois números, enquanto o outro soma três. O compilador Java distingue qual método chamar com base nos argumentos passados na chamada do método.

Sobrescrita de Métodos (Overriding)

A sobrescrita de métodos, por outro lado, ocorre quando uma subclasse redefine um método da superclasse. O método sobrescrito na subclasse deve ter a mesma assinatura, ou seja, o mesmo nome, tipo de retorno e parâmetros que o método na superclasse. A sobrescrita é usada para fornecer uma implementação específica de um método que já é fornecido por sua classe pai.


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

class Cachorro extends Animal {
    // Sobrescrita do método emitirSom
    @Override
    public void emitirSom() {
        System.out.println("O cachorro late");
    }
}

No exemplo acima, a classe Cachorro sobrescreve o método emitirSom da classe Animal. Quando um objeto da classe Cachorro chama emitirSom, a nova implementação é executada, e não a da classe Animal.

Regras para Sobrescrita de Métodos

Há algumas regras que precisam ser seguidas para sobrescrever um método corretamente:

  • O método na subclasse deve ter a mesma assinatura que o método na superclasse.
  • O método na subclasse deve ser pelo menos tão acessível quanto o método na superclasse.
  • O método na subclasse não pode lançar exceções verificadas mais amplas do que o método na superclasse.
  • Se o método na superclasse retorna um tipo, o método na subclasse deve retornar o mesmo tipo ou um subtipo (covariância).

Diferenças entre Sobrecarga e Sobrescrita

Embora ambos os conceitos permitam o uso de métodos com o mesmo nome, eles são usados em contextos diferentes e têm regras diferentes:

  • Sobrecarga ocorre dentro da mesma classe e é usada para métodos que realizam a mesma operação de maneiras diferentes, com diferentes parâmetros.
  • Sobrescrita ocorre entre uma superclasse e uma subclasse e é usada para fornecer uma implementação específica de um método que já existe na superclasse.

Palavra-chave super

Quando sobrescrevemos um método, às vezes queremos chamar a versão do método da superclasse antes de adicionar a funcionalidade específica da subclasse. Isso pode ser feito usando a palavra-chave super.


class Gato extends Animal {
    @Override
    public void emitirSom() {
        super.emitirSom(); // Chama o método da superclasse
        System.out.println("O gato mia");
    }
}

Neste exemplo, a classe Gato sobrescreve o método emitirSom, mas também chama a implementação do método da classe Animal antes de adicionar sua própria funcionalidade.

Conclusão

A compreensão da sobrecarga e sobrescrita de métodos é essencial para o uso efetivo da programação orientada a objetos em Java. Esses conceitos permitem que os programadores escrevam código mais flexível e reutilizável, facilitando a manutenção e a expansão de sistemas. Ao dominar a sobrecarga e a sobrescrita, você será capaz de criar classes que se comportam de maneira polimórfica, respondendo de forma diferente a mensagens comuns, o que é um princípio fundamental da orientação a objetos.

Now answer the exercise about the content:

_Qual das seguintes afirmações sobre 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:

7111.13. Estrutura de classes e objetos em Java: Palavras-chave como this e super

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