o diferença chave entre substituir e sobrecarregar em C # é que a ligação da chamada do método substituído à sua definição ocorre em tempo de execução, enquanto a ligação da chamada do método sobrecarregado à sua definição ocorre no tempo de compilação.
C # é uma linguagem de programação de uso geral desenvolvida pela Microsoft. A principal vantagem do C # é que ele suporta Programação Orientada a Objetos (OOP). Um pilar da OOP é o polimorfismo. Dá um objeto para ter múltiplos comportamentos. Existem dois tipos no polimorfismo, conhecidos como substituição e sobrecarga. Este artigo discute a diferença entre substituição de método e sobrecarga em C #.
1. Visão geral e principais diferenças
2. O que está substituindo em C #
3. O que está sobrecarregando em c #
4. Semelhanças entre substituir e sobrecarregar em c #
5. Comparação lado a lado - sobrescrevendo vs sobrecarregando em c # na forma de tabela
6. Resumo
Há um outro conceito importante em OOP é herança. É para usar atributos e métodos da classe já existente. Melhora a reutilização do código. A classe já existente é a classe base e a nova classe é conhecida como classe derivada. Na substituição do polimorfismo, deve haver uma classe base e uma classe derivada. A ligação da chamada do método substituído à definição ocorre no tempo de execução. Um exemplo é o seguinte.
Figura 01: Programa C # com substituição
De acordo com o programa acima, a classe Shape é a classe base e contém o método de exibição. Classe Retângulo e Triângulo são classes derivadas. Essas classes derivadas também têm a mesma exibição de método com suas próprias implementações.
Primeiro, a variável de referência obj é criada. Aponta para o objeto Shape. Portanto, o método de exibição da classe Shape será executado. Em seguida, a variável de referência aponta para o objeto Rectangle. Portanto, o método de exibição da classe Rectangle será executado. Finalmente, a variável de referência aponta para o objeto Triangle. Portanto, o método de exibição da classe Triangle será executado. O método de exibição da classe base é substituído pelos métodos de exibição das classes derivadas.
O método a ser executado é decidido em tempo de execução. A classe Shape é escrita com a palavra-chave 'virtual'. As classes Rectangle e Triangle são escritas com a palavra-chave 'override'. Se essas palavras-chave não forem usadas, a saída imprimirá o conteúdo do método de exibição da classe Shape para todos.
Na sobrecarga, vários métodos têm o mesmo nome, mas com parâmetros diferentes. Os parâmetros podem ser de tipos diferentes. Os métodos também podem ter um número diferente de parâmetros. A sobrecarga de método ocorre na mesma classe. A ligação de métodos sobrecarregados à definição ocorre em tempo de compilação. Consulte o programa C # abaixo.
Figura 02: Programa C # com sobrecarga
De acordo com o programa acima, a classe A possui dois métodos com o mesmo nome chamado soma. Eles têm diferentes tipos de parâmetros. No programa principal, um objeto de A é criado. A soma (2,3) invocará o método da soma com números inteiros. A soma (5.1, 7.94) invocará o método da soma com valores duplos. Ambos os métodos têm o mesmo nome e o mesmo número de parâmetros. Mas os tipos de parâmetros são diferentes. O método necessário é chamado de acordo. A sobrecarga também pode ocorrer se os nomes dos métodos e os tipos de parâmetros forem iguais, mas o número de parâmetros for diferente.
Substituindo vs Sobrecarregando em C # | |
Substituir em C # é fornecer uma implementação específica em um método de classe derivada para um método já existente na classe base. | Sobrecarregar em C # é criar vários métodos com o mesmo nome com diferentes implementações. |
Parâmetros | |
Na substituição de C #, os métodos têm o mesmo nome, os mesmos tipos de parâmetros e o mesmo número de parâmetros.. | No C # Overloading, os métodos têm o mesmo nome, mas um número diferente de parâmetros ou um tipo diferente de parâmetros. |
Ocorrência | |
Em C #, a substituição ocorre dentro da classe base e da classe derivada. | Em C #, a sobrecarga ocorre dentro da mesma classe. |
Tempo de encadernação | |
A ligação da chamada do método substituído à sua definição acontece no tempo de execução. | A ligação da chamada do método sobrecarregado à sua definição acontece no tempo de compilação. |
Sinônimos | |
A substituição é chamada como polimorfismo de tempo de execução, polimorfismo dinâmico ou ligação tardia. | Sobrecarga é chamada como polimorfismo em tempo de compilação, polimorfismo estático ou ligação antecipada. |
Substituição e Sobrecarga são dois tipos de polimorfismo. A diferença entre substituir e sobrecarregar em C # é que a ligação da chamada do método substituído à sua definição ocorre em tempo de execução, enquanto a ligação da chamada do método sobrecarregado à sua definição ocorre no tempo de compilação.
1.Kumar, Mukesh. C # Corner. Disponivel aqui
2.tutorialspoint.com. "Polimorfismo C #". TutorialsPoint. Disponivel aqui
3.tutorialspoint.com. "Tipos de dados C #". TutorialsPoint, disponível aqui