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