Als «abstract-class» getaggte Fragen

Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann. Sie sind im Allgemeinen als erweiterte / Unterklassen gedacht und haben im Allgemeinen "abstrakte Methoden", die von Unterklassen implementiert werden müssen.

7
Wann werden abstrakte Klassen anstelle von Schnittstellen mit Erweiterungsmethoden in C # verwendet?
"Abstrakte Klasse" und "Schnittstelle" sind ähnliche Konzepte, wobei die Schnittstelle die abstraktere der beiden ist. Ein entscheidender Faktor ist, dass abstrakte Klassen bei Bedarf Methodenimplementierungen für abgeleitete Klassen bereitstellen. In C # wurde dieser Differenzierungsfaktor jedoch durch die kürzliche Einführung von Erweiterungsmethoden reduziert, die es ermöglichen, Implementierungen für Schnittstellenmethoden bereitzustellen. …


4
In C ++ warum und wie sind virtuelle Funktionen langsamer?
Kann mir jemand im Detail erklären, wie genau die virtuelle Tabelle funktioniert und welche Zeiger beim Aufruf von virtuellen Funktionen zugeordnet sind. Wenn sie tatsächlich langsamer sind, können Sie dann anzeigen, dass die Ausführung der virtuellen Funktion mehr Zeit in Anspruch nimmt als normale Klassenmethoden? Es ist leicht, den Überblick …



3
Machen Sie niemals öffentliche Mitglieder virtuell / abstrakt - wirklich?
In den 2000er Jahren sagte mir ein Kollege, es sei ein Anti-Pattern, öffentliche Methoden virtuell oder abstrakt zu machen. Zum Beispiel hielt er eine Klasse wie diese für nicht gut designt: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == …

5
Erstellen Aufzählungen spröde Schnittstellen?
Betrachten Sie das folgende Beispiel. Jede Änderung an der ColorChoice-Enumeration wirkt sich auf alle IWindowColor-Unterklassen aus. Neigen Aufzählungen dazu, spröde Schnittstellen zu verursachen? Gibt es etwas Besseres als eine Aufzählung, um mehr polymorphe Flexibilität zu ermöglichen? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor { …

2
Abstrakter Ausnahme-Supertyp
Wenn das Werfen System.Exceptionso schlecht ist, warum wurde es dann überhaupt nicht Exceptiongemacht abstract? Auf diese Weise wäre es nicht möglich anzurufen: throw new Exception("Error occurred."); Dies würde die Verwendung abgeleiteter Ausnahmen erzwingen, um weitere Details zu dem aufgetretenen Fehler bereitzustellen. Wenn ich beispielsweise eine benutzerdefinierte Ausnahmehierarchie für eine Bibliothek …


6
Was sind die Unterschiede zwischen abstrakten Klassen, Interfaces und wann sie verwendet werden sollen?
Vor kurzem habe ich angefangen, mich mit OOP zu beschäftigen, und jetzt bin ich so weit, dass ich umso verwirrter werde, je mehr ich über die Unterschiede zwischen abstrakten Klassen und Schnittstellen lese. Bisher kann keiner von beiden instanziiert werden. Schnittstellen sind mehr oder weniger strukturelle Entwürfe, die das Gerüst …


3
Sollte ich eine Schnittstelle direkt implementieren oder von der Superklasse ausführen lassen?
Gibt es einen Unterschied zwischen public class A extends AbstractB implements C {...} gegen... public class A extends AbstractB {...} abstract class AbstractB implements C {...} Ich verstehe, dass Klasse A in beiden Fällen der Schnittstelle entspricht. Im zweiten Fall AbstractBkann die Implementierung für Schnittstellenmethoden in bereitgestellt werden C. Ist …


4
Gibt es ein anderes Verwendungsprinzip für abstrakte Klassen / Interfaces in C ++ und Java?
Laut Herb Sutter sollte man abstrakte Interfaces (alle rein virtuellen Funktionen) abstrakten Klassen in C ++ vorziehen, um die Implementierung so weit wie möglich zu entkoppeln. Obwohl ich diese Regel persönlich sehr nützlich finde, bin ich kürzlich einem Team mit vielen Java-Programmierern beigetreten, und im Java-Code scheint diese Richtlinie nicht …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.