Während es technisch möglich ist, jedes Vererbungsebenen selbst fein abzustimmen - auch wenn Super-Klassen-Felder ausgeschlossen werden - möchten Sie vielleicht hier einen Schritt zurückgehen.
Grundsätzlich gibt es zwei Fälle:
- Die Superklasse hat keine Felder/Zustand. Dann hast du sowieso nichts auszuschließen.
- Die Superklasse hat einen Zustand, der durch Felder dieser Klasse repräsentiert wird.
Also wie denkst du, um den zweiten Teil sinnvoll zu adressieren? Sie sehen, wenn Sie die Deserialisierung ohne die Daten für die Super-Klassen-Felder zulassen - das bedeutet, dass Sie möglicherweise viele zusätzliche Tests durchführen müssen. Um sicherzustellen, dass Superklassenmethoden keine Ausnahmen auslösen, weil plötzlich Felder null sind, anstatt initialisiert zu werden.
Mit anderen Worten: Es ist möglich, dass Sie alle diese Werte "auslassen" - Sie erstellen Objekte, die sich völlig anders verhalten. Sind Sie bereit für den Umgang mit all diesen Effekten?
Meanung: Das Überspringen von Superklassenfeldern erfordert, dass Sie den Serialisierungscode stören. Es kann viel zusätzlichen Testaufwand erfordern. Und was gewinnst du? Ein paar Bytes weniger Datentransfer zur Laufzeit.
Darüber hinaus: Was ist der Zweck einer Inhernement-Hierarchie, die 4 Ebenen hat - aber wo der Super-Klasse-Zustand ist irrelevant?
Also meine Nicht-Antwort: Überlegen Sie sorgfältig, ob Ihre Idee wirklich das beste OO-Design ist, um die zugrunde liegenden Anforderungen zu lösen.
Jede Instanz der Unterklasse wird konstruiert, indem zuerst die Basisklasse erstellt wird. Sie fragen sich also, warum Sie nur die Unterklasse und nicht die Basisklasse serialisieren möchten. – JRG
Zu Ihrer Information: Ich habe meine Antwort umformuliert, um klarer zu machen, warum ich Ihre Idee abgelehnt habe. Lass es mich wissen, wenn du das hilfreich findest. – GhostCat