자바에서 다운캐스팅

MD Aminul Islam 2023년10월12일
  1. 자바에서 다운캐스팅
  2. 암시적으로 다운캐스트를 시도할 때 컴파일러 오류 발생
자바에서 다운캐스팅

Java로 작업하는 경우 TypeCasting, UpCasting 또는 DownCasting으로 작업할 수 있습니다. 사용 목적은 한 유형에서 다른 유형으로 변환하는 것입니다.

이것은 변수 또는 객체와 함께 할 수 있습니다. 개체의 경우 두 가지 종류의 변환을 사용할 수 있습니다.

첫 번째는 부모에서 자식으로, 두 번째는 자식에서 부모로입니다.

여기에서 Child에서 Parent로의 변환을 UpCasting이라고 하며 Parent에서 Child로의 변환을 DownCasting이라고 합니다. 암시적 또는 명시적으로 UpCasting을 수행할 수 있지만 DownCasting은 명시적으로만 수행할 수 있습니다.

이 기사에서는 DownCasting에 대해 자세히 살펴보겠습니다. 또한 주제를 쉽게 이해할 수 있도록 필요한 예와 설명을 사용하여 주제를 설명합니다.

자바에서 다운캐스팅

이제 DownCasting에 대한 예를 살펴보겠습니다.

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();
  }
}

코드를 부분별로 설명하겠습니다. 먼저 ParentClass라는 부모 클래스를 만든 다음 ChildClass라는 자식 클래스를 만들고 ParentClass로 확장합니다.

ChildClass에서 @Override로 재정의를 수행했습니다.

그런 다음 제어 클래스인 Downcasting이라는 또 다른 클래스를 만들었습니다. 클래스에서 ParentClass에서 개체를 만들었습니다.

그런 다음 ChildClass Child = (ChildClass)Parent; 줄을 사용하여 개체를 다운캐스팅합니다.

마지막으로 모든 데이터를 인쇄합니다. 이제 위의 Java 프로그램을 실행한 후.

아래와 같은 출력을 얻을 수 있습니다.

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

암시적으로 다운캐스트를 시도할 때 컴파일러 오류 발생

위의 예에서는 다운캐스팅을 명시적으로 수행했습니다. 암시적으로 다운캐스팅을 시도하면 오류가 발생할 수 있습니다.

암시적으로 다운캐스팅을 시도한 다음 예를 확인하십시오.

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();
  }
}

위의 프로그램을 컴파일하려고 하면 아래와 같은 오류가 발생합니다.

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

DownCasting은 외부에서 수행해야 합니다. DownCasting을 사용하면 자식 개체가 부모 개체의 속성을 가져올 수 있습니다.

여기에서 공유되는 코드 예제는 Java로 되어 있으며 시스템에 Java가 포함되어 있지 않은 경우 환경에 Java를 설치해야 합니다.

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