Programação Orientada a Objetos: Uma Abordagem com Java/Introdução/Polimorfismo: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Criou a página com "Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas com..."
 
mSem resumo de edição
Linha 1:
== Polimorfismo ==
Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. Esse mecanismo é fundamental na programação orientada a objetos, permitindo definir funcionalidades que operem genericamente com objetos, abstraindo-se de seus detalhes particulares quando esses não forem necessários.
 
Para que o polimorfismo possa ser utilizado, é necessário que os métodos que estejam sendo definidos nas classes derivadas tenham exatamente a mesma assinatura do método definido na superclasse; nesse caso, está sendo utilizado o mecanismo de '''redefinição''' ou '''sobreescritasobrescrita''' de métodos (''overriding''). Esse mecanismo de redefinição é muito diferente do mecanismo de sobrecarga de métodos, onde as listas de argumentos são diferentes.
 
No caso do polimorfismo, o compilador não tem como decidir estaticamente qual o método que será utilizado se o método foi redefinido em outras classes derivadas — afinal, pelo princípio da substituição, um objeto de uma classe derivada pode estar sendo referenciado como sendo um objeto da superclasse. Se esse for o caso, o método que deve ser selecionado é o da classe derivada e não o da superclasse. Dessa forma, a decisão sobre qual dos métodos é o método que deve ser selecionado, de acordo com o tipo do objeto, pode ser tomada apenas em tempo de execução, através do mecanismo de '''ligação tardia'''. O mecanismo de ligação tardia também é conhecido pelos termos em inglês ''late binding'', ''dynamic binding'' ou ainda ''run-time binding''.