HOWTO · Java

자바에서 다운캐스팅

이 자습서에서는 Java의 다운캐스팅에 대해 설명합니다.

이 페이지의 내용

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를 설치해야 합니다.