Downcasting in Java

MD Aminul Islam 12 Oktober 2023
  1. Downcasting in Java
  2. Compilerfehler, wenn Sie versuchen, implizit herunterzuwandeln
Downcasting in Java

Wenn Sie mit Java arbeiten, können Sie mit TypeCasting, UpCasting oder DownCasting arbeiten. Der Zweck ihrer Verwendung ist die Umwandlung von einem Typ in einen anderen.

Dies kann mit Variablen oder Objekten geschehen. Für ein Objekt stehen zwei Arten der Transformation zur Verfügung.

Der erste ist Parent to Child und der zweite Child to Parent.

Hier wird die Umwandlung vom Kind zum Elternteil als UpCasting bezeichnet, und die Umwandlung vom Elternteil zum Kind wird als DownCasting bezeichnet. Wir können das UpCasting implizit oder explizit durchführen, aber wir können das DownCasting nur explizit durchführen.

In diesem Artikel werden wir uns die Details von DownCasting ansehen. Außerdem werden wir das Thema anhand notwendiger Beispiele und Erklärungen beschreiben, um das Thema einfacher zu machen.

Downcasting in Java

Nun sehen wir uns ein Beispiel zum Thema DownCasting an.

class ParentClass {
  String name;
  void showMessage() {
    System.out.print("Parent class method is called");
  }
}
class ChildClass extends ParentClass {
  int age;
  @Override
  void showMessage() {
    System.out.print("The child class method is called");
  }
}
class Downcasting {
  public static void main(String[] args) {
    ParentClass Parent = new ChildClass();
    Parent.name = "Alex";
    ChildClass Child = (ChildClass) Parent;

    Child.age = 21;
    System.out.print("Name:" + Child.name + " ");
    System.out.println("Age:" + Child.age);
    Child.showMessage();
  }
}

Lassen Sie uns den Code Teil für Teil erklären. Zuerst haben wir eine übergeordnete Klasse namens ParentClass erstellt, und dann haben wir eine untergeordnete Klasse namens ChildClass erstellt und diese um die ParentClass erweitert.

Auf der ChildClass haben wir das Überschreiben mit @Override durchgeführt.

Danach haben wir eine weitere Klasse namens Downcasting erstellt, unsere Kontrollklasse. In der Klasse haben wir ein Objekt aus der ParentClass erstellt.

Dann stürzen wir ein Objekt mit der Zeile ChildClass Child = (ChildClass)Parent; herunter.

Zum Schluss drucken wir alle Daten aus. Jetzt nach dem Ausführen des obigen Java-Programms.

Sie erhalten eine Ausgabe wie die folgende.

Name:Alex Age:21
The child class method is called

Compilerfehler, wenn Sie versuchen, implizit herunterzuwandeln

Im obigen Beispiel haben wir das Downcasting explizit durchgeführt. Wenn Sie versuchen, implizit herunterzuladen, erhalten Sie möglicherweise eine Fehlermeldung.

Schauen Sie sich das nächste Beispiel an, in dem wir versucht haben, implizit herunterzuwerfen.

class ParentClass {
  String name;
  void showMessage() {
    System.out.print("Parent class method is called");
  }
}
class ChildClass extends ParentClass {
  int age;
  @Override
  void showMessage() {
    System.out.print("Child class method is called");
  }
}
class Downcasting {
  public static void main(String[] args) {
    ParentClass Parent = new ChildClass();
    Parent.name = "Alex";
    ChildClass Child = new ParentClass();

    Child.age = 21;
    System.out.print("Name:" + Child.name + " ");
    System.out.println("Age:" + Child.age);
    Child.showMessage();
  }
}

Wenn Sie versuchen, das obige Programm zu kompilieren, erhalten Sie einen Fehler wie den folgenden.

/tmp/AMCRVnDhlV/Downcasting.java:22: error: incompatible types: ParentClass cannot be converted to ChildClass
ChildClass Child = new ParentClass();
                           ^
1 error

Bitte beachten Sie, dass DownCasting extern erfolgen muss. Durch die Verwendung von DownCasting kann ein untergeordnetes Objekt die Eigenschaften seines übergeordneten Objekts erhalten.

Bitte beachten Sie, dass die hier freigegebenen Codebeispiele in Java sind und Sie Java in Ihrer Umgebung installieren müssen, wenn Ihr System kein Java enthält.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn