Skip to main content

Was ist eine virtuelle Klasse?

Eine virtuelle Klasse ist eine Klasse, die nur einmal im Gedächtnis zugewiesen wird, so dass Kinder dieser Klasse nur die eine Kopie dieser übergeordneten Klasse verwenden, die im Gedächtnis festgelegt ist.Eine Klasse ist eine Gruppe von Objekten, die gemeinsame Eigenschaften oder Attribute teilen.Das Erstellen eines Klassenvirtuellen gibt objektorientierte Programmiersprachen die Fähigkeit, mehrfacher Vererbung zu verwenden, wenn die zweiten oder mehr Generation übergeordnete Klassen aus den gemeinsamen Basisklassen der Ahnen stammen.Abhängig von der referenzierten Computerprogrammiersprache werden das virtuelle Schlüsselwort, das ähnliche Schlüsselwort oder die Syntax und die Semantik einer Klasse verwendet, um zu implizieren, dass eine bestimmte Klasse als virtuell angesehen werden soll.

Nicht alle objektorientierten Programmiersprachen ermöglichen eine Vielzahl der Vererbung, welche welcheWenn eine untergeordnete Klasse gleichzeitig aus mehreren Elternklassen abgeleitet werden kann.In einer Programmiersprache wie C ++ kann eine Klasse alle Mitgliedsdaten und Mitgliedsfunktionen aus beiden übergeordneten Klassen gleichzeitig erben und Zugriff auf beide Sätze von übergeordneten Daten und Funktionen haben.Andere Sprachen, die die Mehrfachbindung unterstützen, sind Perl, Python, TCL und Eiffel.

Ein Problem tritt in mehreren Erbhierarchien auf, wenn zwei oder mehr Elternklassen, die zur Erstellung einer Kinderklasse verwendet wurden, ursprünglich nur aus einer oder derselben Großelternklasse abgeleitet werden.Dies wird als Diamond -Problem bezeichnet, der Name, der sich aus der Art und Weise ergibt, wie die Hierarchie in dieser Situation aussehen würde.Wenn ein Compiler -Programm versucht, eine Klasse zu instanziieren, z. B. eine Enkelkindklasse aus zwei übergeordneten Klassen mit einem gemeinsamen Großelternteil, werden zwei Kopien des Großelternteils im Gedächtnis hergestellt, eines für jeden Elternteil.

Aufgrund der Unklarheit, die durch mehrere Kopien desselben Großelternteils verursacht wird, kann der Compiler nicht feststellen, welche Kopie des Großelternteils das Enkelkind zum Zugriff auf Großelternteil oder Funktionen verwenden sollte.Um diese Situation zu beheben, wird in C ++ der Großelternteil in eine virtuelle Klasse gemacht, wenn sie die Eltern deklarieren.Dies führt dazu, dass der Compiler nur eine Kopie des Großelternteils in Erinnerung annimmt, die beide Elternteile teilen.Sobald der Großelternteil zu einer virtuellen Klasse geworden ist, hat der Compiler kein Problem damit, zu entscheiden, wie das Enkelkind auf den Großelternteil zugreifen sollin oder werden in Zukunft die Basis für viel größere Hierarchien.Die ordnungsgemäße Nutzung einer virtuellen Klasse verleiht Klassenhierarchien einen größeren Breitengrad in der Entwicklung.Sie haben jedoch das Potenzial, Fehler zu verursachen, die schwer zu finden sind.Die Untersuchung solider Prinzipien für Computerprogrammiering technischen Engineering wird dazu beitragen, dass unerwartete Nebenwirkungen von unsachgemäßer Programmorganisation nicht auftreten.