Wir wissen, dass Tiger Tiere sind. Wenn die Tierklasse die übergeordnete Klasse der Tigerklasse ist, ist zu beachten, dass der Tiger seine einzigartigen Eigenschaften und Funktionen verliert, wenn er ein Tier ist. Aus der Sicht des menschlichen Denkens gehört die Aussage „Tiger ist ein Tier“ zur Methode des Aufwärtsdenkens, die dem Aufwärtstransformationsobjekt in der Java-Sprache ähnelt.
Nehmen Sie an, dass die Animal-Klasse die übergeordnete Klasse der Tiger-Klasse ist, wenn Sie eine Unterklasse zum Erstellen eines Objekts verwenden und die Referenz dieses Objekts in das Objekt der übergeordneten Klasse einfügen, zum Beispiel:
Animala;a=newTiger();
oder
Animala;Tigerb=newTiger();a=b;
Zu diesem Zeitpunkt ist es so, als würde man sagen: „Ein Tiger ist ein Tier“, wenn man Objekt a als nach oben transformiertes Objekt von Objekt b bezeichnet. Die Unterklasse ist für die Erstellung der Entität des hochtransformierten Objekts verantwortlich, das hochtransformierte Objekt verliert jedoch einige Attribute und Funktionen des ursprünglichen Objekts.
Das Aufwärtstransformationsobjekt weist folgende Eigenschaften auf:
(1) Das hochtransformierte Objekt kann die neu hinzugefügten Mitgliedsvariablen der Unterklasse nicht bedienen und die neuen Methoden der Unterklasse nicht aufrufen.
(2) Das hochtransformierte Objekt kann auf von der Unterklasse geerbte oder ausgeblendete Mitgliedsvariablen zugreifen und auch von der Unterklasse geerbte Methoden oder von der Unterklasse überschriebene Instanzmethoden aufrufen. Das Upcast-Objekt betreibt von der Unterklasse geerbte Methoden oder von der Unterklasse überschriebene Instanzmethoden, und seine Funktion entspricht dem Aufruf dieser Methoden für das Unterklassenobjekt. Wenn daher eine Unterklasse eine Instanzmethode der übergeordneten Klasse überschreibt und das Upcast-Objekt des Objekts diese Instanzmethode aufruft, muss daher die von der Unterklasse überschriebene Instanzmethode aufgerufen werden.
Beachten:
(1) Verwechseln Sie die von der übergeordneten Klasse erstellten Objekte nicht mit Up-Type-Objekten des Unterklassenobjekts.
(2) Das Upcast-Objekt des Objekts kann erzwungen werden, in ein Unterklassenobjekt umgewandelt zu werden. Zu diesem Zeitpunkt verfügt das Unterklassenobjekt über alle Attribute und Funktionen der Unterklasse.
(3) Sie können Objekten, die von der Unterklasse deklariert wurden, keine Verweise auf von der übergeordneten Klasse erstellte Objekte zuweisen. Sie können beispielsweise nicht sagen: „Die Person ist Chinese.“