Object Slicing: Datenverlust bei der Vererbung
In der objektorientierten Programmierung ermöglicht die Vererbung Klassen, die Funktionalität ihrer übergeordneten Klassen zu erweitern. Dieser Vererbungsmechanismus kann jedoch ein Phänomen hervorrufen, das als Objekt-Slicing bekannt ist und zu Datenverlust führen kann.
Was ist Objekt-Slicing?
Objekt-Slicing tritt auf, wenn ein Objekt Einer abgeleiteten Klasse wird eine Instanz einer Basisklasse zugewiesen. Während dieser Zuweisung wird ein Teil der Daten der abgeleiteten Klasse unzugänglich und wird „weggeschnitten“.
Wann findet Objekt-Slicing statt?
Betrachten Sie die folgenden zwei Klassen:
class A { int foo; }; class B : public A { int bar; };
Eine Instanz der Klasse B enthält zwei Datenelemente: foo (geerbt von A) und bar. Wenn Sie jedoch ein Objekt vom Typ B einer Instanz vom Typ A wie folgt zuweisen:
B b; A a = b;
Auf die Datenelementleiste im B-Objekt kann im A-Objekt nicht mehr zugegriffen werden, was zu einer Objektaufteilung führt. Dies geschieht, weil a als Basisklasseninstanz behandelt wird und keine Kenntnis über das in der abgeleiteten Klasse B definierte Balkenelement hat.
Das obige ist der detaillierte Inhalt vonWas ist Object Slicing und wann kommt es bei der Vererbung vor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!