Polimorfismo (Sobreescrita, Sobrecarga) + Interface
Fala, Dev! Criei essa aula para falar de polimorfismos de forma prática. Em poucos minutos, você já sai dominando o tema. Assista aqui: https://youtu.be/glvlW-L-HeE
Se formos olhar para a palavra: Poli + Morfo, fica mais fácil de entender: Poli (Multiplas) + Morfo (Formas), ou seja, muitas formas de fazer a mesma coisa.
No Java, o polimorfismo é aplicado através dos métodos, que podem ter o mesmo nome, mas mudando alguns detalhes.
O primeiro detalhe importante é a assinatura. Aqui, um método pode ter o mesmo nome, deste que tenha a quantidade de parâmetros diferentes do outro, assim como, pode usar diferentes tipos de dados, como parâmetro.
Exemplo:
void falar()
void falar(String texto)
void falar(int quantidade)
void falar(String texto, int quantidade)
Neste exemplo, temos um método com o mesmo nome, "falar", que possui três assinaturas diferentes, ou seja, um método sem parâmetro, outro com parâmetro, e outro com mais de um parâmetro, e um com parâmetro de tipos de dados diferentes.
A isso, dar-se o nome de polimorfismo de sobrecarga, onde estou apenas sobrecarregando um método. Afinal, estamos usando o mesmo nome, então, a palavra sobrecarregar, pode ser vista como se eu estivesse pondo um monte de caixas para uma pessoa sobrecarregar, caixas do mesmo tipo, ou seja, estou empilhando caixas para que uma pessoa sozinha as carregue. Eu estou a sobrecarregando.
Assim, fica mais fácil de lembrar da sobrecarga, um método com mesmo nome, que recebe parâmetros diferentes, e por isso, pode se comportar diferente.
Já a segunda forma, o polimorfismo de sobreescrita, neste, temos o método com o mesmo nome, mas com um comportamento diferente. Aqui, utilizamos mais esse conceito em conjunto com o de herança do java. Veja abaixo:
class Pessoa {
void falar(){
System.out.println("falar");
}}
class Gestor extends Pessoa{
@Override
void falar(){
System.out.println("falar com autoridade");
}}
Neste exemplo, o método falar presente na classe Pessoa é o mesmo da classe Gestor, que o herda. Sabemos disso, através da anotação @Override, acima do método.
O método tem o mesmo nome, mas o comportamento dele, ou seja, o que está dentro das chaves, mudou. Logo, temos a sobreescrita (sobre+escrita), ou seja, atualizamos a escrita, mudamos a escrita, mudamos o comportamento do método.
Acredito que agora, esses conceitos ficaram mais claros de serem usados. Caso queira aprofundar o assunto, e ainda visualizar um pouco de interfaces, acesse a aula e assista aqui: https://youtu.be/glvlW-L-HeE
Ah! Reza a lenda, de quem se inscrever no canal, aprende 2x mais rápido. Fica a dica. Haha
Bons estudos.