Función abstracta vs virtual virtual en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Función abstracta en C#
  2. Función virtual en C#
Función abstracta vs virtual virtual en C#

Este tutorial comparará la función abstracta y la función virtual en C#.

Función abstracta en C#

Una función abstracta no tiene una definición de sí misma en C#. Significa que cada clase hija tiene que anular la función abstracta y proporcionar su propia definición de la función abstracta. Una función abstracta solo se puede declarar dentro de una clase abstracta. La palabra clave abstract se utiliza para crear clases y funciones abstractas en C#. El siguiente ejemplo de código nos muestra cómo crear una función abstracta con la palabra clave abstract en 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();
    }
  }
}

Producción :

This is Child Class

Creamos una clase abstracta parentClass y declaramos una función abstracta name dentro de la clase parentClass. Heredamos la clase Program de la parentClass y anulamos la función name. En la función main, inicializamos una instancia de la clase Programa y llamamos a la función name().

Función virtual en C#

Una función virtual tiene su propia definición, pero también permite que las clases secundarias la anulen y tengan su propia definición de la misma función. La palabra clave virtual se utiliza para especificar que una función es una función virtual en C#. El siguiente ejemplo de código nos muestra cómo podemos crear una función virtual en 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();
    }
  }
}

Producción :

This is the Parent Class
This is the Parent Class

En el código anterior, creamos una clase parentClass y definimos una función virtual name() dentro de la clase parentClass. Luego heredamos la clase Program de la parentClass y no anulamos la función name() dentro de la clase Program. En la función principal, creamos instancias tanto de la clase Program como de la parentClass y llamamos a la función name() con ambas instancias. La llamada de función p.name() nos dio la salida This is the Parent Class porque no hay una definición de la función name() dentro de la clase 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

Artículo relacionado - Csharp Function