Função abstrata vs função virtual em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Função abstrata em C#
  2. Função Virtual em C#
Função abstrata vs função virtual em C#

Este tutorial irá comparar a função abstrata e a função virtual em C#.

Função abstrata em C#

Uma função abstrata não tem definição de si mesma em C#. Isso significa que cada classe filha tem que substituir a função abstrata e fornecer sua própria definição da função abstrata. Uma função abstrata só pode ser declarada dentro de uma classe abstrata. A palavra-chave abstract é usada para criar classes e funções abstratas em C#. O exemplo de código a seguir nos mostra como criar uma função abstrata com a palavra-chave abstract em C#.

using System;

namespace abstract_vs_virtual {
  public abstract class parentClass {
    public abstract void name();
  }
  class Program : parentClass {
    public override void name() {
      Console.WriteLine("This is Child Class");
    }
    static void Main(string[] args) {
      Program p = new Program();
      p.name();
    }
  }
}

Resultado:

This is Child Class

Criamos uma classe abstrata parentClass e declaramos uma função abstrata name dentro da classe parentClass. Herdamos a classe Program de parentClass e substituímos a função name. Na função main, inicializamos uma instância da classe Programa e chamamos a função name().

Função Virtual em C#

Uma função virtual tem sua própria definição, mas também permite que as classes filhas a substituam e tenham sua própria definição da mesma função. A palavra-chave virtual é usada para especificar que uma função é uma função virtual em C#. O exemplo de código a seguir nos mostra como podemos criar uma função virtual em C#.

using System;

namespace abstract_vs_virtual {
  public class parentClass {
    public virtual void name() {
      Console.WriteLine("This is the Parent Class");
    }
  }
  class Program : parentClass {
    static void Main(string[] args) {
      Program p = new Program();
      p.name();
      parentClass pc = new parentClass();
      pc.name();
    }
  }
}

Resultado:

This is the Parent Class This is the Parent Class

No código acima, criamos uma classe parentClass e definimos uma função virtual name() dentro da classe parentClass. Em seguida, herdamos a classe Program de parentClass e não substituímos a função name() dentro da classe Program. Na função principal, criamos instâncias da classe Program e da parentClass e chamamos a função name() com ambas as instâncias. A chamada de função p.name() nos deu a saída This is the Parent Class porque não há definição da função name() dentro da classe Program.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Csharp Function