"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como a substituição e a sobrecarga de método diferem em Java?

Como a substituição e a sobrecarga de método diferem em Java?

Publicado em 2024-11-21
Navegar:834

How do Method Overriding and Method Overloading Differ in Java?

Distinguindo polimorfismo dinâmico e estático em Java

Compreender a diferença entre polimorfismo dinâmico e estático é crucial na programação orientada a objetos com Java. Este artigo fornecerá uma explicação simplificada e um exemplo para elucidar esse conceito.

Polimorfismo Dinâmico vs. Estático

O polimorfismo permite que um único nome de método tenha múltiplas implementações dependendo do tipo de objeto chamando-o. Existem dois tipos principais de polimorfismo:

  • Polimorfismo Dinâmico (Runtime Binding): As chamadas de método são resolvidas em tempo de execução com base na classe do objeto real. Ocorre com substituição de método em subclasses e também é conhecido como ligação tardia.
  • Polimorfismo estático (vinculação em tempo de compilação): As chamadas de método são resolvidas em tempo de compilação com base no tipo declarado de a variável de referência. Ocorre com sobrecarga de método na mesma classe e também é conhecido como ligação antecipada.

Sobrecarga de método

A sobrecarga de método é uma forma de polimorfismo estático onde múltiplos métodos com o mesmo nome existem na mesma classe, mas diferem em seus parâmetros. Ao chamar um método sobrecarregado, Java determina o método apropriado a ser invocado com base no número e tipos de argumentos passados.

Exemplo de código (sobrecarga de método):

class Calculation {
  void sum(int a, int b) { System.out.println(a   b); }
  void sum(int a, int b, int c) { System.out.println(a   b   c); }

  public static void main(String[] args) {
    Calculation obj = new Calculation();
    obj.sum(10, 10, 10); // Output: 30
    obj.sum(20, 20); // Output: 40
  }
}

Substituição de método

A substituição de método é uma forma de polimorfismo dinâmico onde métodos com o mesmo nome e assinatura são declarados em classes diferentes, mas compartilham uma classe pai comum. Ao chamar um método substituído, Java determina o método a ser invocado com base na classe real do objeto em tempo de execução.

Exemplo de código (substituição de método):

class Animal {
  public void move() {
    System.out.println("Animals can move");
  }
}

class Dog extends Animal {

  public void move() {
    System.out.println("Dogs can walk and run");
  }
}

public class TestDog {

  public static void main(String[] args) {
    Animal a = new Animal(); // Animal reference and object
    Animal b = new Dog(); // Animal reference but Dog object

    a.move(); // Output: Animals can move

    b.move(); // Output: Dogs can walk and run
  }
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3