Acompanhei todo o curso, porém não entendi o conceito. Alguma dica para entender melhor o Polimorfismo ou melhor, explicar de maneira mais didática o que seria.
Acompanhei todo o curso, porém não entendi o conceito. Alguma dica para entender melhor o Polimorfismo ou melhor, explicar de maneira mais didática o que seria.
Pelo que entendi, polimorfismo é usar um método na classe filha igual o da classe mãe mas tendo um tratamento interno diferente. Exemplo: Uma classe mãe com o método calculaArea( ){ }, e suas 2 classes filhas, uma que calcula a área de um circulo e outra a de um retângulo. Os dados recebidos podem ser os mesmo, mas o cálculo dentro deles será diferente.
Olá Suhailah! Tudo bem?
É super normal não entender de primeira alguns conceitos do paradigma de orientação a objetos, e polimorfismo é um dos principais conceitos desse paradigma.
Como o Juliano explicou, o polimorfismo nos permite a reescrita de métodos da classe mãe (superclasse) nas classes filhas, possibilitando que tenham a sua própria implementação (versão) do método da classe mãe.
Mas além disso, o polimorfismo nos possibilita utilizar tipos mais específicos em tipos mais genéricos.
Como assim?
Bem, imagine que temos uma classe Funcionario
, que possui seus métodos e atributos que serão comuns a todos os funcionários de uma empresa...
Nessa mesma empresa teremos uma classe chamada Gerente
, pois os gerentes da empresa precisam ter um acesso ao sistema e uma senha, coisas que os demais funcionários não terão.
Seguindo essa linha de raciocínio, percebemos que o gerente continua sendo um tipo de funcionário dessa empresa, mas tem suas particularidades que o diferem dos demais funcionários.
Um exemplo de polimorfismo nesse caso seria a classe Funcionario
ter um método que define um bônus salarial para todos os funcionários e a classe Gerente
ter um método que define um bônus salarial diferente da classe Funcionario
... ou seja reescrevendo o método dessa classe para que o gerente tenha uma bonificação maior.
Além disso, como a classe Gerente
herda da classe Funcionario
, podemos também utilizar uma variável do tipo Funcionario para guardar uma referência do tipo Gerente :
Gerente gerente = new Gerente();
Funcionario funcionario = gerente;
Ficou mais claro? Na imagem abaixo eu te dou um resumo que pode ajudar...
Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas (cuidado, polimorfismo não quer dizer que o objeto fica se transformando, muito pelo contrário, um objeto nasce de um tipo e morre daquele tipo, o que pode mudar é a maneira como nos referimos a ele).
Como te falei lá no início, esse conceito pode ser meio estranho a primeira vista, então não se preocupe se sentir a necessidade de rever algum trecho do curso ou ler um material adicional para fixar bem esse conceito, pois ele vai ser muito importante no uso da programação orientada a objetos.
Vou deixar aqui abaixo dois links que podem te ajudar... Trata-se de uma ótima apostila de Java e orientação a objetos da Caelum, e um post sobre as características da programação orientada a objetos.
Apostila Caelum - Polimorfismo
Artigo - POO: o que é programação orientada a objetos?
A explicação foi clara? Se eu puder te ajudar em mais alguma coisa, é só falar! 😄
Obrigado Juliano e Guilherme pela explicação.
Percebo que é um assunto que sempre terei que ler e reler.