Als «inheritance» getaggte Fragen

Vererbung ist eine Möglichkeit, den Code vorhandener Objekte wiederzuverwenden oder einen Subtyp aus einem vorhandenen Objekt oder aus beiden zu erstellen, abhängig von der Unterstützung der Programmiersprache.

4
Vererbung vs Mixins in dynamischen Sprachen?
Wann sollten Sie Vererbungsmuster gegenüber Mixins in dynamischen Sprachen bevorzugen? Mit Mixins meine ich das eigentliche richtige Einmischen, wie das Einfügen von Funktionen und Datenelementen in ein Objekt zur Laufzeit. Wann würden Sie beispielsweise die prototypische Vererbung anstelle von Mixins verwenden? Um deutlicher zu veranschaulichen, was ich mit mixin meine, …

1
Warum glaubt (/ hat) Bertrand Meyer, dass Subclassing die einzige Möglichkeit ist, ein „geschlossenes“ Modul zu erweitern?
In Meyers Object-Oriented Software Construction (1988) definiert er das Open / Closed-Prinzip wie folgt: Ein Modul gilt als offen, wenn es noch zur Erweiterung zur Verfügung steht. Beispielsweise sollte es möglich sein, Felder zu den enthaltenen Datenstrukturen oder neue Elemente zu den von ihnen ausgeführten Funktionen hinzuzufügen. Ein Modul gilt …


5
Wann sollte Vererbung verwendet werden, wann nur ein boolesches Feld?
In unserer Rails-Anwendung fügen wir Benachrichtigungen hinzu. Einige davon sind blocking: Sie stoppen den Fortschritt der hinzugefügten Ressource, da einige Informationen zu dieser Ressource fehlen. Andere Benachrichtigungen sind einfache Benachrichtigungen, die nur Informationen enthalten. Heute hatte ich eine Diskussion mit einem anderen Programmierer in unserem Team. Ich habe die Vererbungsstruktur …




1
Wie verifiziere ich das Liskov-Substitutionsprinzip in einer Vererbungshierarchie?
Inspiriert von dieser Antwort: Liskov Substitutionsprinzip erfordert , dass Voraussetzungen können in einem Subtyp nicht gestärkt werden. Nachbedingungen können in einem Subtyp nicht abgeschwächt werden. Invarianten des Supertyps müssen in einem Subtyp erhalten bleiben. Verlaufsbeschränkung (die "Verlaufsregel"). Objekte gelten nur durch ihre Methoden als veränderbar (Kapselung). Da Subtypen Methoden einführen …

6
Reale Szenarien für geschützte Methoden
Heute ist mir aufgefallen, dass ich protectedim C ++ - Code grundsätzlich keine Methoden verwende, da ich selten das Bedürfnis habe, nicht öffentliche Methoden eines übergeordneten Elements aufzurufen. Ich verwende protected in Java im Muster der Template-Methode, aber da Sie private Methoden in C ++ überschreiben können, brauche ich das …

8
"Komposition vor Vererbung" - Ist der einzige Grund, sich gegen Signaturänderungen zu verteidigen?
Diese Seite befürwortet Komposition über Vererbung mit dem folgenden Argument (umformuliert in meinen Worten): Eine Änderung der Signatur einer Methode der Oberklasse (die in der Unterklasse nicht überschrieben wurde) führt an vielen Stellen zu zusätzlichen Änderungen, wenn Vererbung verwendet wird. Wenn wir jedoch Komposition verwenden, befindet sich die erforderliche zusätzliche …

2
Wie vermeide ich es, viele Passthrough-Funktionen in einen Wrapper zu schreiben?
Ich habe eine Klasse, die eine andere Klasse eines gemeinsamen Basistyps umschließt. Da die Basistyp-Schnittstelle ziemlich groß ist, müssen viele Passthrough-Funktionen geschrieben werden. Ich suche nach einem Weg, dies zu vermeiden. Machen wir ein Beispiel: Car / \ Volvo VolvoWithTrailer Jetzt muss ich jede Funktion in der Autoschnittstelle für VolvoWithTrailer …

3
Zusammensetzung über Vererbung aber
Ich versuche mir Software-Engineering beizubringen und stoße auf widersprüchliche Informationen, die mich verwirren. Ich habe OOP gelernt und was abstrakte Klassen / Schnittstellen sind und wie man sie verwendet, aber dann lese ich, dass man "Komposition gegenüber Vererbung bevorzugen" sollte. Ich verstehe Komposition ist, wenn eine Klasse ein Objekt einer …

2
Warum muss die Basisklasse hier einen virtuellen Destruktor haben, wenn die abgeleitete Klasse keinen dynamischen Rohspeicher zuweist?
Der folgende Code verursacht einen Speicherverlust: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) …

5
Vererbung gegen zusätzliche Eigenschaft mit Nullwert
Ist es für Klassen mit optionalen Feldern besser, Vererbung oder eine nullfähige Eigenschaft zu verwenden? Betrachten Sie dieses Beispiel: class Book { private String name; } class BookWithColor extends Book { private String color; } oder class Book { private String name; private String color; //when this is null then …
12 java  inheritance  class  null 


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.