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

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição não verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Adição de Predefinição
 
Linha 5: Linha 5:


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''.
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''.
{{AutoCat}}

Edição atual desde as 20h20min de 26 de março de 2017

Polimorfismo[editar | editar código-fonte]

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