Was sind die Unterschiede zwischen Subtyp und Subklasse?
Was sind die Unterschiede zwischen Subtyp und Subklasse, und wie kann ich feststellen, ob eine Klasse ist ein Subtyp/Unterklasse einer anderen Klasse?
- es gibt keine solche Dinge in c++
Du musst angemeldet sein, um einen Kommentar abzugeben.
C++ bezieht sich auf eine Unterklasse als eine "abgeleitete Klasse".
In C++, Klassen, Arten, und die nur "Subtypen" sind abgeleitete Klassen. Also, wenn Sie wählen, um es mit den Worten "Subtyp" und "Unterklasse" in Verbindung mit C++, Sie sind wahrscheinlich die gleiche Sache. Je nach Ihrer akademischen Kontext, ich nehme an, man könnte sagen, dass die private Vererbung bedeutet nicht erstellen Sie einen Subtyp, in dem Fall sind Sie anders. Für diese Angelegenheit, die in einigen wissenschaftlichen Kontexten der Begriff "Unterart" ist nicht legitim (formaler Art Theorie gab es vor der OOP. Für diese Angelegenheit, bevor der informatik, es sei denn, Sie zählen Babbage).
In C++11 können Sie testen, ob
AClass
ist eine abgeleitete Klasse vonAnother
(Optional ausgenommen der Fall, wo Sie sind in der gleichen Klasse):Dieser Ausdruck ist wahr, auch wenn die Vererbung ist privat.
Diese sind theoretische Konzepte, nicht C++. Aber mal sehen, wie Sie angewendet werden können, um C++.
Unterklassen bezieht sich auf die Bildung neuer Arten durch Vererbung aus einer anderen. C++ bietet, dass Mechanismus und fordert Unterklassen "abgeleitete Klassen".
subtypisierung bezieht sich auf die Möglichkeit, Werte des Subtyps an Orten, wo Werte von der Art zu erwarten sind. In C++ kann man der Auffassung, dass öffentliche Vererbung bedeutet eine subtypisierung Beziehung, oder Sie könnten strenger sein und überlegen, wie subtypisierung nur die Fälle, in denen die überschreibungen von virtuellen Funktionen gewährleisten die Einhaltung der LSP. Und wenn man bedenkt, dass private und geschützte Vererbung nicht (aber immer noch ist ein Fall der Unterklassen) ist gesund, was Einschränkungen, die Sie setzen oder nicht auf die virtuelle Funktion überschrieben werden.
So, wie gewohnt, die genauen Definitionen -- und ich zielgerichtet gab keine -- verwendet wird, akzeptieren oder auszuschließen einige Ausnahmefälle (private oder protected-Basisklassen in C++) oder sogar eine ganze Domäne (beachten Sie auch die Einschränkungen, Typ template-Parameter erfüllen müssen, um ein Eingabe-system oder nicht? wenn Sie Ihre Definitionen sind offen genug, um anzuwenden, um die Menge der Sprachen, die Sie bis Ende Mai durch die Beantwortung von ja-und berücksichtigen Sie dabei, dass C++ hat zwei Eingabe-Systeme, Interaktion. Und betrachten wir nun die Auswirkungen der expliziten Spezialisierung auf den zweiten.) Und die genauen Definitionen sind in der Regel gemacht, um die Leichtigkeit der rest der Arbeit, in der Sie vorgeschlagen werden.
Aus: http://www.cs.princeton.edu/courses/archive/fall98/cs441/mainus/node12.html
Sollten Sie den vollständigen Artikel Lesen.
Klassen werden neue Typen definiert durch den Programmierer, so dass ich denke, dass die Unterklasse == Subtyp.
Steve Jessop schrieb:
Ich denke Nein. Eine Unterklasse ist eine Klasse in der Klasse (wie Motor ist Teil des Autos).
Schauen Sie sich das Beispiel unten an: