Saltar para o conteúdo

DC-UFRPE/Licenciatura Plena em Computação/Programação II/Polimorfismo

Fonte: Wikiversidade

O polimorfismo é um conceito da programação orientada a objetos (POO) que permite que um objeto possa ser tratado de diversas maneiras, dependendo do contexto em que ele é utilizado. Isso significa que um mesmo método pode ter comportamentos diferentes para objetos de classes diferentes.

Tipos de polimorfismo

[editar | editar código-fonte]

Existem dois tipos de polimorfismo: o estático e o dinâmico.

  • Polimorfismo estático: No polimorfismo estático, também conhecido como sobrecarga de método, um método tem o mesmo nome, mas assinaturas diferentes (parâmetros diferentes) e é utilizado para realizar operações distintas.
  • Polimorfismo dinâmico: Já no polimorfismo dinâmico, também chamado de sobrescrita de método, o método é sobrescrito na subclasse, ou seja, a subclasse possui um método com o mesmo nome e assinatura do método da superclasse, porém com um comportamento diferente.

Vamos considerar um exemplo de polimorfismo em Java:

public class Animal {
  public void fazerBarulho() {
    System.out.println("O animal fez um barulho!");
  }
}

public class Cachorro extends Animal {
  @Override
  public void fazerBarulho() {
    System.out.println("O cachorro latiu!");
  }
}

public class Gato extends Animal {
  @Override
  public void fazerBarulho() {
    System.out.println("O gato miou!");
  }
}

public class Main {
  public static void main(String[] args) {
    Animal animal1 = new Cachorro();
    Animal animal2 = new Gato();

    animal1.fazerBarulho();
    animal2.fazerBarulho();
  }
}

Neste exemplo, temos a classe Animal que possui o método fazerBarulho. As subclasses Cachorro e Gato sobrescrevem este método com seus próprios comportamentos. Na classe Main, instanciamos um objeto de cada subclasse e chamamos o método fazerBarulho, que tem um comportamento diferente para cada objeto.

O polimorfismo é uma técnica importante na POO, que permite um código mais flexível e adaptável. É fundamental compreender os conceitos de polimorfismo estático e dinâmico, e saber como implementá-los corretamente em suas classes.

Links externos

[editar | editar código-fonte]