Sobes.tech
Middle

O que é polimorfismo dinâmico em Java?

sobes.tech IA

Resposta da IA

A implementação dinâmica (ou polimorfismo em tempo de execução) é realizada através da sobrescrita de métodos (override). Isto significa que a decisão de qual método será chamado é tomada em tempo de execução, não em tempo de compilação.

Pontos-chave:

  • Herança: Requer uma hierarquia de classes onde a subclasse herda da superclasse.
  • Sobrescrita: A subclasse fornece sua própria implementação de um método que já está declarado na superclasse.
  • Referência à superclasse: Um objeto da subclasse pode ser atribuído a uma referência de tipo superclasse.
  • Chamada de método: Ao chamar um método sobrescrito através de uma referência à superclasse, será executada a implementação do objeto real (subclasse).

Exemplo:

// Superclasse
class Animal {
    public void makeSound() {
        System.out.println("Som desconhecido");
    }
}

// Subclasse
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Au!");
    }
}

// Subclasse
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Miau!");
    }
}

// Uso do polimorfismo
class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Referência à superclasse aponta para objeto de subclasse
        Animal myCat = new Cat();

        myDog.makeSound(); // Chama o método de Dog
        myCat.makeSound(); // Chama o método de Cat
    }
}

Vantagens:

  • Flexibilidade: Permite tratar objetos de diferentes subclasses de forma uniforme através de uma referência comum à superclasse.
  • Extensibilidade: Facilmente adiciona novas subclasses sem modificar o código existente que usa a referência à superclasse.
  • Simplificação do código: Permite escrever um código mais genérico.