1723 Stimmen

Was ist der Unterschied zwischen einer abstrakten Methode und einer virtuellen Methode?

Was ist der Unterschied zwischen einer abstrakten Methode und einer virtuellen Methode? In welchen Fällen ist es empfehlenswert, abstrakte oder virtuelle Methoden zu verwenden? Welcher Ansatz ist der beste?

1voto

Yituo Punkte 1254

Von einem C++-Hintergrund, C# virtuelle entspricht C++ virtuelle, während C# abstrakte Methoden entspricht C++ reine virtuelle Funktion

1voto

Wenn eine Klasse von dieser abstrakten Klasse ableitet, ist sie gezwungen, das abstrakte Mitglied zu überschreiben. Dies ist ein Unterschied zum virtuellen Modifikator, der angibt, dass das Mitglied optional überschrieben werden kann.

0voto

Es gibt nichts, was man in C# als virtuelle Klasse bezeichnen könnte.

Für Funktionen

  1. Abstrakte Funktion haben nur Signatur nur, sollte die Antriebsklasse mit Funktionalität überschreiben.
  2. Die virtuelle Funktion enthält den Teil der Funktionalität, den die Antriebsklasse je nach Anforderung überschreiben kann oder nicht

Sie können nach Ihrem Bedarf entscheiden.

0voto

Vinay Chanumolu Punkte 113

Eine abstrakte Methode hat keine Implementierung und wird in der übergeordneten Klasse deklariert. Die untergeordnete Klasse ist für die Implementierung dieser Methode verantwortlich.

Eine virtuelle Methode sollte eine Implementierung in der Elternklasse haben, und es erleichtert der Kindklasse die Entscheidung, ob sie die Implementierung der Elternklasse verwenden oder eine neue Implementierung für sich selbst für diese Methode in der Kindklasse haben möchte.

0voto

Ciro Corvino Punkte 1796

Eine abstrakte Funktion oder Methode ist ein öffentlicher "Operationsname", der von einer Klasse offengelegt wird. Sein Ziel ist es, zusammen mit abstrakten Klassen, in erster Linie eine Form der Einschränkung im Objektdesign gegen die Struktur zu bieten, die ein Objekt implementieren muss.

Die Klassen, die von der abstrakten Klasse erben, müssen diese Methode implementieren, da Compiler im Allgemeinen Fehler auslösen, wenn sie dies nicht tun.

Die Verwendung von abstrakten Klassen und Methoden ist vor allem wichtig, um zu vermeiden, dass durch die Fokussierung auf Implementierungsdetails beim Entwurf von Klassen die Klassenstruktur zu sehr mit den Implementierungen verbunden ist, wodurch Abhängigkeiten und Kopplungen zwischen Klassen entstehen, die untereinander zusammenarbeiten.

Eine virtuelle Funktion oder Methode ist einfach eine Methode, die ein öffentliches Verhalten einer Klasse modelliert, die wir aber frei lassen können, um sie in der Vererbungskette zu ändern, weil wir denken, dass untergeordnete Klassen einige spezifische Erweiterungen für dieses Verhalten implementieren müssen könnten.

Beide stellen eine Form der Polymorphismus im Paradigma der Objektorientierung.

Wir können abstrakte Methoden und virtuelle Funktionen zusammen verwenden, um ein gutes Vererbungsmodell zu unterstützen.

Wir entwerfen eine gute abstrakte Struktur der Hauptobjekte unserer Lösung, dann erstellen wir Basisimplementierungen, indem wir diejenigen ausfindig machen, die anfälliger für weitere Spezialisierungen sind, und wir machen diese zu Virtuellen, schließlich spezialisieren wir unsere Basisimplementierungen, wobei wir eventuell geerbte Virtuelle "überschreiben".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X