Warum Komposition gegenüber Vererbung bevorzugen? Welche Kompromisse gibt es für jeden Ansatz? Wann sollten Sie die Vererbung der Komposition
Vererbung ist das System in der objektorientierten Programmierung, mit dem Objekte Operationen unterstützen können, die durch vordere Typen definiert sind, ohne eine eigene Definition angeben zu müssen. Es ist der Hauptvektor für Polymorphismus in der objektorientierten Programmierung.
Warum Komposition gegenüber Vererbung bevorzugen? Welche Kompromisse gibt es für jeden Ansatz? Wann sollten Sie die Vererbung der Komposition
Bei der Planung meiner Programme beginne ich oft mit einer Gedankenkette wie folgt: Eine Fußballmannschaft ist nur eine Liste von Fußballspielern. Deshalb sollte ich es vertreten mit: var football_team = new List<FootballPlayer>(); Die Reihenfolge dieser Liste entspricht der Reihenfolge, in...
Was sind die Unterschiede zwischen diesen beiden Codefragmenten? Verwenden von type(): import types if type(a) is types.DictType: do_something() if type(b) in types.StringTypes: do_something_else() Verwenden von isinstance(): if isinstance(a, dict): do_something() if isinstance(b, str) or...
Gibt es einen Grund, von einer Klassendeklaration zu erben object? Ich habe gerade einen Code gefunden, der dies tut, und ich kann keinen guten Grund dafür finden. class MyClass(object): # class code follows...
Auf der Seite API-Referenzbereich heißt es: Ein Bereich kann von einem übergeordneten Bereich erben. Auf der Seite zum Umfang des Entwicklerhandbuchs heißt es: Ein Bereich (prototypisch) erbt Eigenschaften von seinem übergeordneten Bereich. Erbt ein untergeordneter Bereich immer...
Was ist der Unterschied zwischen public, privateund protectedVererbung in C ++? Alle Fragen, die ich zu SO gefunden habe, befassen sich mit bestimmten
In " Programming Python " erwähnt Mark Lutz "Mixins". Ich komme aus C / C ++ / C # und habe den Begriff noch nicht gehört. Was ist ein Mixin? Wenn ich zwischen den Zeilen dieses Beispiels lese (auf das ich verlinkt habe, weil es ziemlich lang ist), gehe ich davon aus, dass es sich um die...
Ich bin ziemlich neu in der objektorientierten Programmierung von Python und habe Probleme, die super()Funktion (neue Stilklassen) zu verstehen, insbesondere wenn es um Mehrfachvererbung geht. Zum Beispiel, wenn Sie etwas haben wie: class First(object): def __init__(self): print "first" class...
Wie richte ich eine Klasse ein, die eine Schnittstelle darstellt? Ist das nur eine abstrakte
Diese Abbildung zeigt erneut, dass jedes Objekt einen Prototyp hat. Die Konstruktorfunktion Foo hat auch eine eigene __proto__Funktion, nämlich Function.prototype, und die wiederum über ihre __proto__Eigenschaft erneut auf den Object.prototype verweist. Wiederholen Sie also, Foo.prototype ist nur...
Ich bin etwas verwirrt darüber, wie Java-Generika mit Vererbung / Polymorphismus umgehen. Nehmen Sie die folgende Hierarchie an - Tier (Eltern) Hund - Katze (Kinder) Angenommen, ich habe eine Methode doSomething(List<Animal> animals). Nach allen Regeln der Vererbung und Polymorphismus, würde...
Jemand erwähnte es im IRC als das
Bitte erklären Sie in einer leicht verständlichen Sprache oder einem Link zu einem
Wenn Sie eine einfache Objekthierarchie in Python erstellen, möchte ich Methoden der übergeordneten Klasse aus einer abgeleiteten Klasse aufrufen können. In Perl und Java gibt es ein Schlüsselwort für this ( super). In Perl könnte ich Folgendes tun: package Foo; sub frotz { return...
Wie rufe ich die übergeordnete Funktion aus einer abgeleiteten Klasse mit C ++ auf? Zum Beispiel habe ich eine Klasse namens parentund eine Klasse namens, childdie vom Elternteil abgeleitet ist. Innerhalb jeder Klasse gibt es eine printFunktion. Bei der Definition der Druckfunktion des Kindes...
Was ist der Unterschied zwischen: class Child(SomeBaseClass): def __init__(self): super(Child, self).__init__() und: class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self) Ich habe gesehen, superdass es in Klassen mit nur einer einzigen Vererbung ziemlich oft verwendet wird....
Wenn Klasse Bund Klasse Klasse Cerweitern Aund ich ein Objekt vom Typ Boder habe C, wie kann ich feststellen, von welchem Typ es sich um eine Instanz
Was ist der Unterschied? Wann soll ich welche verwenden? Warum gibt es so viele von
In einem meiner Interviews wurde ich gebeten, den Unterschied zwischen einer Interface- und einer Abstract-Klasse zu erklären . Hier ist meine Antwort: Methoden einer Java-Schnittstelle sind implizit abstrakt und können nicht implementiert werden. Eine abstrakte Java-Klasse kann Instanzmethoden...
Dies kann eine allgemeine OOP-Frage sein. Ich wollte einen generischen Vergleich zwischen einer Schnittstelle und einer abstrakten Klasse auf der Grundlage ihrer Verwendung durchführen. Wann möchte man eine Schnittstelle verwenden und wann möchte man eine abstrakte Klasse verwenden...