Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Polimorfismo

Tem alguma diferença ou algo que vai me beneficiar se eu criar um objeto dessa formar?

Autenticavel vitor = new Cliente();

se eu criar assim vai ter algo que eu não vou poder fazer?

Cliente vitor = new Cliente();

é por que pelo que eu entendi é criado daquela forma no primeiro código, pois mostra o poder do polimorfismo.

1 resposta
solução!

Olá Vitor, tudo bem com você?

Um objeto criado a partir de um tipo de referência conhece apenas métodos e atributos dessa referência. Como assim?

Se eu criar um objeto Cliente a partir da referência Autenticavel

Autenticavel vitor = new Cliente();

Eu só serei capaz de acessar os métodos que existem na interface autenticável, mas não serei capaz de acessar os métodos e atributos que existem na classe Cliente. Se eu criar um objeto com a referência Cliente

Cliente vitor = new Cliente();

Eu serei capaz de acessar tanto os métodos e atributos da classe Cliente, quanto os métodos da interface Autenticavel, pois a classe Cliente implementa esta interface.

Beleza, então se eu criar uma referência do tipo Cliente, eu tenho todos os métodos e a partir da interface, só os métodos dela. Como pode ser benefício usar o Autenticavel, se eu perco funcionalidades da minha classe?

É interessante usar a referência de uma interface, ou classe polimórfica, quando queremos comportamentos específicos em comum, que são definidos nessa interface ou classe. Por exemplo, no caso mostrado por você, queremos que um Cliente seja Autenticavel, isto é, tenha métodos de autenticação, no entanto, é interessante que um Gerente seja Autenticavel também, pois este terá acesso ao sistema e funcionalidades administrativas. Se nós fizermos ambas as classes implementarem a interface Autenticavel, podemos fazer um método de autenticação que autentica ambas as classes, e que recebe justamente um Autenticavel, que guarda todo o comportamento de autenticação.

O polimorfismo traz possibilidades muito interessantes para evitar reutilização de código, e para aprimorar a arquitetura do sistema!

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software