DC-UFRPE/Licenciatura Plena em Computação/Programação II/Polimorfismo
Polimorfismo
[editar | editar código-fonte]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.
Exemplo
[editar | editar código-fonte]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.
Conclusão
[editar | editar código-fonte]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.