Was ist Upcasting und Downcasting in Java? Einfache Erklärung

Veröffentlicht: 2021-01-22

Inhaltsverzeichnis

Upcasting und Downcasting in Java

Typecasting in Java bezieht sich auf das Verfahren, bei dem ein Datentyp in einen anderen umgewandelt wird. Dies kann sowohl automatisch als auch manuell erfolgen. Während ein Programmierer die manuelle Konvertierung alleine durchführen muss, kommt für den automatischen Prozess ein Compiler zum Einsatz. Downcasting und Upcasting sind im Wesentlichen zwei Arten von Objekt-Typecasting.

Untergeordnete und übergeordnete Objekte sind zwei unterschiedliche Arten von Objekten. Nun gibt es zwei Möglichkeiten, mit deren Hilfe die Objekte initialisiert werden können, um anschließend auch die Eigenschaften zu erben, die die Kind- und Elternklasse haben. Diese Wege umfassen:

  • Child c = new Child(): Greift auf alle Mitglieder zu, die unter untergeordnete und übergeordnete Klassen fallen
  • Parent p = new Child(): Greift nur auf die Mitglieder der Elternklasse sowie auf die Methoden zu, die in der Kindklasse überschrieben wurden

Im Wesentlichen wird das Casting vom Typ Parent to Child als Upcasting bezeichnet, während das Casting vom Typ Child to Parent als Downcasting bezeichnet wird.

Das Typecasting-System wird verwendet, um dafür zu sorgen, dass die Variablen von einer Funktion korrekt verarbeitet werden oder nicht. Während Downcasting nicht implizit möglich ist, kann man Upcasting sowohl explizit als auch implizit durchführen.

Sowohl Downcasting als auch Upcasting sind wichtige Elemente von Java und ermöglichen es Menschen, komplexe Programme mit der Verwendung einer einfachen Syntax zu entwickeln. Sie haben auch einige große Vorteile wie das Gruppieren verschiedener Objekte oder Polymorphismus.

Lernen Sie Online-Softwareentwicklungskurse von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Upcasting

Beim Upcasting ist ein untergeordnetes Objekt eine Typumwandlung in ein übergeordnetes Klassenobjekt. Mit der Verwendung dieses Prozesses können Benutzer problemlos auf die ausgezeichneten Methoden und Variablen der Eltern-zu-Kind-Klasse zugreifen. Der Zugriff auf nur einige der bestimmten Methoden und Variablen der untergeordneten Klasse, wie etwa die überschriebenen Methoden, ist dabei erforderlich. In vielen Fällen wird Upcasting auch als Erweitern und Verallgemeinern bezeichnet. Das Upcasting kann implizit ausgeführt werden und bietet den Benutzern die Flexibilität, auf die Mitglieder der Elternklasse zuzugreifen.

Das folgende Beispiel kann helfen, den Prozess besser zu verstehen.

Beispiel: Es gibt eine Tierklasse, die verschiedene Tierklassen enthält, Fische sind eine davon. Unter der Annahme, dass die Klasse der Tiere um die Klasse der Fische erweitert wird, gäbe es zwei Arten der Vererbung. Vererbung ist einer der Schlüsselaspekte der objektorientierten Programmierung oder OOP, die es einer Klasse ermöglicht, die Eigenschaften einer anderen zu erben. Dies impliziert die abgeleitete Klasse, die eine Obermenge der Basisklasse ist. Möglicherweise werden hier mehr Methoden als in der Basisklasse vorgestellt. Während des Upcasts ist das einzige, was mit der Klassenschnittstelle passieren kann, dass sie am Ende Methoden verliert, anstatt sie zu gewinnen. Dadurch ermöglicht der Compiler ein Upcasting ohne spezielle Notationen oder explizite Casts.

Zusammensetzung vs. Vererbung

Wenn es um objektorientierte Programmierung geht, besteht eine hohe Wahrscheinlichkeit, dass man am Ende nur Methoden und Daten in einer Klasse zusammenfasst und verwendet, während man anschließend die in dieser Klasse vorhandenen Objekte verwendet. Die Leute können sogar bestimmte vorhandene Klassen verwenden, um neue Klassen mit Komposition zu entwickeln. Vererbung wird vergleichsweise selten eingesetzt. Beim Erlernen von OPP, obwohl die Vererbung viel Aufmerksamkeit erhält, ist es wichtig, dass Entwickler seine korrekte Verwendung kennen und nicht versuchen, es einfach zu verwenden, wo immer sie können.

Tatsächlich muss man es ziemlich selten verwenden, nur für die Szenarien, in denen sich die Vererbung tatsächlich als nützlich erweist. Eine der einfachsten Möglichkeiten, um festzustellen, ob eine Person Vererbung oder Komposition verwenden sollte, besteht darin, sich selbst zu fragen, ob sie von ihrer neuen Besetzung auf die Basisbesetzung aufrüsten muss. Falls Upcasting eine Notwendigkeit ist, müsste man Vererbung verwenden. Wenn dies jedoch nicht erforderlich ist, muss weiter auf die Notwendigkeit der Vererbung eingegangen werden.

Niederwerfen

Downcasting ist eine andere Form des Objekttyp-Castings und wird verwendet, um das Unterklassen-Referenzobjekt zur Elternklasse zu ernennen, was in Java nicht erlaubt ist. Downcast ist nicht allzu schwer zu verstehen. Wenn es beispielsweise eine Basisklasse und eine Klasse gibt, die entweder indirekt oder indirekt von der Basisklasse abgeleitet ist, wird jedes Mal, wenn ein Objekt des Basisklassentyps in eine abgeleitete Klasse typisiert wird, dies als Downcast bezeichnet. Folglich würde man gemäß dem Downcasting das Vererbungsdiagramm durchgehen, indem man danach strebt, ein Basisklassenobjekt zu nehmen und es dann in einen abgeleiteten Klassentyp umzuwandeln. Es ist jedoch wichtig zu beachten, dass das Downcasting je nach geschriebenem Code sinnvoll sein kann oder nicht.

Wenn Leute das Downcasting-System ausführen, werden sie auf keinerlei Compiler-Fehler stoßen. Sie würden jedoch mit java.lang.ClassCastException konfrontiert, was eine Laufzeitausnahme ist. Nun stellt sich also die Frage, wenn Downcasting in Java nicht möglich ist, warum führen die Leute es dann durch? Einfach ausgedrückt, Downcasting kann nur in bestimmten Situationen verwendet werden, in denen das Objekt, auf das von der Elternklasse verwiesen wird, zu einer Unterklasse gehört.

Downcasting kann äußerst nützlich sein, wenn Sie ein Objekt mit einem anderen vergleichen.

Um zu überprüfen, ob ein Downcasting gültig ist oder nicht, kann man laufen

Das getClass()-System ermöglicht es den Entwicklern, die Klasse des übergebenen Objekts zu verstehen und sie anschließend mit der aktuellen Klasse zu vergleichen. Falls sie nicht gleich sind, ist das Downcasting nicht gültig und das Ausprobieren dieses Prozesses ist sinnlos. Das Konzept des Downcasting verwendet hauptsächlich das Casting von Supertypen zu den Subtypen. Ein solcher Gießvorgang wird üblicherweise explizit durchgeführt. Dies impliziert im Grunde, dass größere Typen so hergestellt werden, dass sie explizit in kleine Typen passen.

Upcasting vs. Downcasting

Upcasting und. Downcasting hat einige ganz besondere Unterschiede. Einige von ihnen wurden in den folgenden Hinweisen kurz unterstrichen:

  • Beim Upcasting wird ein untergeordnetes Objekt in ein übergeordnetes Objekt umgewandelt. Andererseits wird die Referenz des übergeordneten Klassenobjekts beim Downcasting an die untergeordnete Klasse weitergegeben.
  • Menschen können Upcasting sowohl explizit als auch implizit durchführen, während Downcasting nur explizit durchgeführt werden kann.
  • Beim Upcasting können Personen in der Kindklasse auf die Variablen und Methoden der Elternklasse zugreifen, aber nicht umgekehrt. Beim Downcasting sind die Variablen und Methoden beider Klassen jedoch leicht zugänglich.
  • Upcasting ermöglicht den Zugriff nur auf bestimmte untergeordnete Klassenmethoden. Sowohl beim Durchführen des Downcastings werden alle Methoden und Variablen, die unter beide Klassen fallen, zugänglich gemacht.

Fazit

Upcasting wird in Java selten verwendet. In den meisten Fällen verwenden die Leute es, wenn sie einen Code entwickeln müssen, der sich nur mit der übergeordneten Klasse befasst. Wenn es darum geht, einen Code zu entwickeln, der Zugriff auf das Verhalten der untergeordneten Klasse bietet, wird in der Regel Downcasting verwendet.

Wenn Sie Java lernen und auch eine Zertifizierung in Cloud Computing erwerben möchten, upGrad bietet ein Advanced Certificate Program in Cloud Computing an . Der 7,5-monatige Online-Kurs wurde speziell für Berufstätige entwickelt, um ihnen den Einstieg in Cloud-Computing-Rollen zu erleichtern.

Werden Sie Full-Stack-Entwickler

BEWERBEN SIE SICH JETZT FÜR DEN MASTER OF COMPUTER SCIENCE VON LIVERPOOL JOHN MOORES