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