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