Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Composição e Interface, ainda não entendi.

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.

3 respostas

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.

solução!

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...

Exemplo da classe Gerente, que herda da classe Funcionário e tem os atributos: nome, senha e autentica.  Duas setas indicam que a variável de tipo Funcionario pode receber um objeto do tipo Funcionario ou um Gerente

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! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Obrigado Juliano e Guilherme pela explicação.

Percebo que é um assunto que sempre terei que ler e reler.