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

Dúvida sobre Polimorfismo

Mais uma vez falou-se sobre polimorfismo, dessa vez com relação a utilização do catch(IOException) pelo fato do mesmo tratar também a exceção do tipo FileNotFoundException. Minha dúvida dessa vez é: para acontecer o polimorfismo, eu dependo de existir a herança entre as classes, ou é possível eu fazer uso do polimorfismo independente da minha classe herdar de alguma outra?

7 respostas

Mas esta acontecendo uma herança ai , todas as classes java herdam de Object -> Throwable -> Error .......

Olá Vagner, obrigado pela interação na dúvida em questão. No contexto da aula eu entendi que está acontecendo a herança entre as classes de exceção, afinal de contas, todas derivam da classe base Exception. A dúvida que levantei no entanto é em se tratando de POO num contexto geral, o polimorfismo pra acontecer ele depende de herança ou é possível usá-lo sem que a classe em que eu esteja trabalhando derive de alguma outra?

Boa noite, Luiz! Como vai?

Na parte 3 do curso de C# é mostrado que o polimorfismo é possível através de herança e através da utilização de interfaces.

Se esses conceitos ainda não estão fundamentados de forma sólida pra vc, então sugiro fortemente que dê uma olhada nesse curso que citei para que vc possa absorver o máximo de conteúdo dos cursos posteriores da linguagem!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Boa tarde Gabriel!

Agradeço pela recomendação desse curso, eu já passei pelo mesmo. Porém essa foi uma dúvida que acabou passando e agora me deparei com a oportunidade de esclarecê-la. Pelo pouco que li hoje sobre o assunto, o polimorfismo depende sim de herança, seja ela de uma classe base ou de uma interface. Afinal de contas polimorfismo é a possibilidade de referenciar objetos de múltiplas formas.

solução!

Opa, Luiz! Então, a capacidade de sobrescrever um método herdado se chama sobrescrita de método e não polimorfismo. Polimorfismo é a capacidade de referenciar um mesmo objeto de várias formas.

Exemplo prático: Imagine que temos a classe Funcionario e uma classe Gerente que herda de Funcionario e implementa a interface IUsuarioAutenticavel. Nessa situação, todas as linhas abaixo são válidas:

IUsuarioAutenticavel gerente1 = new Gerente();
Gerente gerente2 = new Gerente();
Funcionario gerente3 = new Gerente();

Veja que eu tenho 3 possibilidades diferentes de referenciar objetos do tipo Gerente. É a essa possibilidade de referenciar objetos de múltiplas formas que chamamos de polimorfismo.

E como eu disse no outro comentário, se esses conceitos ainda não estão fundamentados de forma sólida pra vc, então sugiro fortemente que dê uma olhada novamente nesse curso que citei para que vc possa absorver o máximo de conteúdo dos cursos posteriores da linguagem! Esses conceitos são muito importantes pois formam a base da programação orientada a objetos.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Opa, boa noite Gabriel! Agora com esse exemplo acima ficou mais fácil de entender o conceito de polimorfismo. Obrigado pelo esclarecimento e me desculpe pela confusão. Vou até editar a minha mensagem acima para evitar passar essa confusão adiante. Recebi em outro post a recomendação do referencial de POO no site da Microsoft, irei lê-lo com mais calma a fim de assimilar melhor esses conceitos.

Beleza, Luiz! Sempre que precisar de alguma ajuda é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!

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