Abstrakte Funktion vs virtuelle Funktion in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Abstrakte Funktion in C#
  2. Virtuelle Funktion in C#
Abstrakte Funktion vs virtuelle Funktion in C#

In diesem Tutorial werden die abstrakte Funktion und die virtuelle Funktion in C# verglichen.

Abstrakte Funktion in C#

Eine abstrakte Funktion hat in C# keine Definition von sich. Dies bedeutet, dass jede untergeordnete Klasse die abstrakte Funktion überschreiben und eine eigene Definition der abstrakten Funktion bereitstellen muss. Eine abstrakte Funktion kann nur innerhalb einer abstrakten Klasse deklariert werden. Das Schlüsselwort abstract wird verwendet, um abstrakte Klassen und Funktionen in C# zu erstellen. Das folgende Codebeispiel zeigt, wie Sie eine abstrakte Funktion mit dem Schlüsselwort abstract in C# erstellen.

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();
    }
  }
}

Ausgabe:

This is Child Class

Wir haben eine abstrakte Klasse parentClass erstellt und eine abstrakte Funktion name innerhalb der Klasse parentClass deklariert. Wir haben die Klasse Program von der parentClass geerbt und die Funktion name überschrieben. In der Funktion main initialisieren wir eine Instanz der Klasse Program und rufen die Funktion name auf.

Virtuelle Funktion in C#

Eine virtuelle Funktion hat eine eigene Definition, aber sie ermöglicht es den untergeordneten Klassen, sie zu überschreiben und ihre eigene Definition derselben Funktion zu haben. Mit dem Schlüsselwort virtual wird angegeben, dass eine Funktion eine virtuelle Funktion in C# ist. Das folgende Codebeispiel zeigt uns, wie wir eine virtuelle Funktion in C# erstellen können.

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();
    }
  }
}

Ausgabe:

This is the Parent Class
This is the Parent Class

Im obigen Code haben wir eine Klasse parentClass erstellt und eine virtuelle Funktion name() innerhalb der Klasse parentClass definiert. Wir haben dann die Klasse Programm von der Klasse parentClass geerbt und die Funktion name() innerhalb der Klasse Programm nicht überschrieben. In der Hauptfunktion haben wir Instanzen sowohl der Klasse Program als auch der Klasse parentClass erstellt und mit beiden Instanzen die Funktion name() aufgerufen. Der Funktionsaufruf p.name() gab uns die Ausgabe This is the Parent Class, da die Funktion name() in der Klasse Programm nicht definiert ist.

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

Verwandter Artikel - Csharp Function