Quais são os mecanismos de implementação de polimorfismo existentes em Java?
sobes.tech IA
Resposta da IA
-
Polimorfismo em tempo de compilação (polimorfismo estático): É implementado através da sobrecarga de métodos (method overloading). Os métodos têm o mesmo nome, mas assinaturas diferentes (quantidade, tipo ou ordem dos argumentos).
class Calculator { // Sobrecarga do método add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Polimorfismo em tempo de execução (polimorfismo dinâmico): É implementado através da sobrescrita de métodos (method overriding). O método na subclasse tem a mesma assinatura que o método na superclasse e fornece sua própria implementação. A decisão de qual método chamar é tomada em tempo de execução, dependendo do tipo real do objeto.
class Animal { public void sound() { System.out.println("Animal faz um som"); } } class Dog extends Animal { // Sobrescrita do método sound @Override public void sound() { System.out.println("Cachorro late"); } } class Cat extends Animal { // Sobrescrita do método sound @Override public void sound() { System.out.println("Gato mia"); } } -
Referências à superclasse / interface: Objetos de subclasses podem ser atribuídos a referências de superclasses ou interfaces que eles implementam. Isso permite tratar objetos de diferentes tipos de forma uniforme através de uma referência comum. A chamada de um método sobrescrito através de tal referência resulta na execução da versão do método do tipo real do objeto.
Animal myAnimal = new Dog(); // Atribuição de um objeto Dog a uma referência de tipo Animal myAnimal.sound(); // Chama o método sobrescrito sound() da classe Dog