Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Diferenças entre Overload e Override com c#

    Diferenças entre Overload e Override com c#

    Jhonathan SoaresBy Jhonathan Soares9 de dezembro de 20194 Mins Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Existem inúmeras maneiras de realizar a mesma coisa quando se trata de programação, e navegando no stackoverflow me deparei com uma questão que me instigou a escrever este artigo. Hoje iremos ver a diferença entre a sobrecarga de método e a substituição de método (Override e Overload) pois a diferença entre eles é um conceito importante para se termos em mente.

    Assim, vamos primeiro entender. O que é sobrecarga de método (overload)

    Utilizar a sobrecarga nos permite criar mais de um método ou função que tem o mesmo nome, mas assinaturas ou parâmetros diferentes na mesma classe. Isto é chamado de sobrecarga de método. Veja alguns pontos importantes

    1. A sobrecarga de método também é chamada de polimorfismo de ligação antecipada ou ligação estática ( early binding polymorphism or static binding ).
    2. O compilador chama automaticamente o método ou a função necessária, verificando o número de parâmetros e seu tipo, que são passados ​​para esse método.
    3. Se o número de parâmetros e tipo não corresponder a nenhuma assinatura de método, ocorrerá o erro de tempo de compilação.
    4. Podemos obter sobrecarga de método alterando o número de parâmetros usados ​​ou usando diferentes tipos de parâmetros ou alterando a ordem dos parâmetros.
    5. Com isto o compilador se encarrega de verificar a existência e coerência de diferentes métodos com o mesmo nome, alterando apenas a quantidade ou tipos de parâmetros necessários.


    //Overloading
    public class teste
    {
        public void obtemInfo(int id)
        {
            //método 1
        }
        public void obtemInfo(string nome)
        {
            //método 2
        }
        
        public void obtemInfo(string nome, bool ativo)
        {
            //método 3
        }
    }
    
    

    Agora que vimos overload, vamos ver O que é substituição de método (override)

    Com o override, podemos criar um método em uma classe derivada com a mesma assinatura e mesmo nome que um método na classe base. Isto é chamado de substituição de método ou ainda ter dois métodos com o mesmo nome e a mesma assinatura, um método na classe base e outro na classe derivada. Veja alguns pontos importantes:

    1. A substituição de método também é chamada de polimorfismo em tempo de execução ou ligação tardia (dynamic polymorphism or late binding).
    2. Podemos substituir um método na classe base, criando função semelhante na classe derivada. Isso pode ser alcançado usando herança e usando virtual & override.
    3. Falar que o método possui a mesma assinatura que o outro significa que os métodos devem ter o mesmo nome, o mesmo número de argumentos e o mesmo tipo de argumento.
    4. A substituição de método é possível apenas nas classes derivadas, mas não dentro da mesma classe por isto temos Overload ou Shadowing (que iremos ver em outro post).
    5. Quando a classe derivada precisa de um método com a mesma assinatura da classe base, mas deseja executar um código diferente daquele fornecido pela classe base, a substituição do método será usada.


     
     //Overriding
    public class teste
    {
            public virtual void obtemInfo(int id)
            {
                //Obtem info padrão
            }
    }
    
    public class teste2 : teste
    {
            public override void obtemInfo(int id)
            {
                //base.obtemInfo(id);
                //ou - Obtem info em uma nova implementação
            }
    }

    Comparação entre sobrecarga de método e substituição de método.

    # Overload Override
    1 Criação de mais de um método ou função com o mesmo nome, mas com assinaturas ou parâmetros diferentes na mesma classe Criação de um método na classe derivada com a mesma assinatura que um método na classe base.
    2) É chamado de polimorfismo em tempo de compilação É chamado polimorfismo de tempo de execução
    3) Ele tem o mesmo nome de método, mas com assinaturas ou parâmetros diferentes Ele deve ter o mesmo nome do método, bem como as assinaturas ou os parâmetros.
    4) Sobrecarga de método não precisa de herança A substituição de método precisa de herança
    5) Sobrecarga de método é possível apenas em classe única A substituição do método precisa do nível hierárquico das classes, ou seja, uma classe pai e outra classe filho.
    6 O modificador de acesso pode ser qualquer um. O modificador de acesso deve ser público.
    7) A sobrecarga de método também é chamada de ligação antecipada. A substituição de método também é chamada de ligação tardia.


    Ou seja, a diferença de overload ou override varia muito em como você escreve o seu código, principalmente se você precisa de um método compartilhado com os mesmos paramêtros ou não. Espero que tenha ficado claro este assunto que é super utilizado no dia-a-dia de um programador.

    Um abraço 🙂

    Fontes: https://stackoverflow.com/questions/673721/overloading-and-overriding

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile