Polimorfismo

Definição - o que significa polimorfismo?

Polimorfismo, em C #, é a capacidade de objetos de diferentes tipos fornecerem uma interface única para diferentes implementações de métodos. Geralmente é usado no contexto de associação tardia, onde o comportamento de um objeto para responder a uma chamada para seus membros de método é determinado com base no tipo de objeto em tempo de execução. O polimorfismo permite redefinir métodos em classes derivadas.

O polimorfismo constitui um dos conceitos fundamentais da programação orientada a objetos, junto com o encapsulamento e a herança.

Definirtec explica polimorfismo

Sobrecarga de método, sobrecarga de construtor e sobrecarga de operador são consideradas polimorfismo de tempo de compilação (também chamado de estático ou ad-hoc) ou ligação inicial. A substituição de método, que envolve herança e funções virtuais, é chamada de polimorfismo de tempo de execução (também chamada de dinâmica, inclusão ou subtipagem) ou ligação tardia. No caso do polimorfismo em tempo de compilação, a identificação do método sobrecarregado a ser executado é realizada em tempo de compilação. No entanto, no polimorfismo de tempo de execução, o tipo de objeto a partir do qual o método substituído será chamado é identificado em tempo de execução.

Em C #, o polimorfismo é implementado por meio de herança e do uso da palavra-chave "virtual". As classes derivadas herdam os membros da classe base, exceto os construtores, com base em seus níveis de acessibilidade. Conseqüentemente, o compilador gera o código para verificar e identificar o tipo de objeto correto (que é apontado pelo tipo de referência) em tempo de execução e o método apropriado a ser chamado.

Um exemplo de polimorfismo é uma classe base de funcionários, que inclui todos os detalhes básicos sobre os funcionários. Classes como secretário e gerente podem herdar da classe base do funcionário com implementações específicas (substituindo métodos virtuais) sempre que necessário nas classes derivadas.

Esta definição foi escrita no contexto de C #