logo

Java의 업캐스팅 및 다운캐스팅

한 데이터 유형을 다른 데이터 유형으로 변환하는 프로세스를 타입캐스팅 그리고 업캐스팅 그리고 다운캐스팅 객체 타입 캐스팅의 유형입니다. Java에서는 객체도 데이터 유형처럼 유형 변환할 수 있습니다. 부모의 그리고 어린이 객체는 두 가지 유형의 객체입니다. 따라서 객체에 대해 가능한 두 가지 유형의 유형 변환이 있습니다. 부모에서 자식으로 그리고 자녀에서 부모로 아니면 말할 수 있다 업캐스팅 그리고 다운캐스팅 .

~ 안에 자바 , 객체는 데이터 유형처럼 유형 변환될 수도 있습니다. 부모의 그리고 하위 개체 두 가지 유형의 객체입니다. 따라서 객체에 대해 가능한 두 가지 유형의 유형 변환이 있습니다. 부모에서 자식으로 그리고 자녀에서 부모로 아니면 말할 수 있다 업캐스팅 그리고 다운캐스팅 .

타입캐스팅 변수가 함수에 의해 올바르게 처리되는지 여부를 확인하는 데 사용됩니다. ~ 안에 업캐스팅 그리고 다운캐스팅 , 우리는 타입캐스트합니다 하위 개체를 상위 개체로 그리고 상위 개체를 하위 개체로 동시에. 업캐스팅은 암시적 또는 명시적으로 수행할 수 있지만 다운캐스팅은 암시적으로 가능할 수 없습니다.

Java의 업캐스팅 및 다운캐스팅

이러한 유형의 객체 캐스팅에 대해 자세히 살펴보겠습니다.

1) 업캐스팅

업캐스팅 객체 타입캐스팅의 한 유형입니다. 자식 개체 는 다음과 같이 타입캐스트됩니다. 상위 클래스 객체 . Upcasting을 사용하면 부모 클래스의 변수와 메소드를 자식 클래스에 쉽게 접근할 수 있습니다. 여기서는 모든 변수와 메소드에 액세스하지 않습니다. 우리는 자식 클래스의 지정된 일부 변수와 메서드에만 액세스합니다. 업캐스팅 ~로도 알려져 있다 일반화 그리고 확폭 .

UpcastingExample.java

 class Parent{ void PrintData() { System.out.println('method of parent class'); } } class Child extends Parent { void PrintData() { System.out.println('method of child class'); } } class UpcastingExample{ public static void main(String args[]) { Parent obj1 = (Parent) new Child(); Parent obj2 = (Parent) new Child(); obj1.PrintData(); obj2.PrintData(); } } 

산출:

Java의 업캐스팅 및 다운캐스팅

2) 다운캐스팅

업캐스팅 또 다른 유형의 객체 형변환입니다. Upcasting에서는 상위 클래스 참조 객체를 하위 클래스에 할당합니다. Java에서는 상위 클래스 참조 객체를 하위 클래스에 할당할 수 없지만 다운캐스팅을 수행하면 컴파일 타임 오류가 발생하지 않습니다. 하지만 실행하면 '클래스캐스트예외' . 이제 요점은 Java에서 다운캐스팅이 불가능한 경우 컴파일러에서 이를 허용하는 이유는 무엇입니까? Java에서는 일부 시나리오를 통해 다운캐스팅을 수행할 수 있습니다. 여기서 하위 클래스 객체는 상위 클래스에서 참조됩니다.

다음은 유효한 시나리오와 유효하지 않은 시나리오를 모두 설명하는 다운캐스팅의 예입니다.

다운캐스팅Example.java

 //Parent class class Parent { String name; // A method which prints the data of the parent class void showMessage() { System.out.println('Parent method is called'); } } // Child class class Child extends Parent { int age; // Performing overriding @Override void showMessage() { System.out.println('Child method is called'); } } public class Downcasting{ public static void main(String[] args) { Parent p = new Child(); p.name = 'Shubham'; // Performing Downcasting Implicitly //Child c = new Parent(); // it gives compile-time error // Performing Downcasting Explicitly Child c = (Child)p; c.age = 18; System.out.println(c.name); System.out.println(c.age); c.showMessage(); } } 

산출:

Java의 업캐스팅 및 다운캐스팅

업캐스팅과 다운캐스팅이 필요한 이유는 무엇입니까?

Java에서는 거의 사용하지 않습니다. 업캐스팅 . 상위 클래스만 다루는 코드를 개발해야 할 때 이를 사용합니다. 다운캐스팅 하위 클래스의 동작에 액세스하는 코드를 개발해야 할 때 사용됩니다.

Java의 업캐스팅 및 다운캐스팅

업캐스팅과 다운캐스팅의 차이점

업캐스팅과 다운캐스팅의 차이점은 다음과 같습니다.

예 아니오 업캐스팅 다운캐스팅
1. 하위 객체는 상위 객체로 타입캐스트됩니다. 상위 클래스 객체의 참조가 하위 클래스에 전달됩니다.
2. 암시적으로 또는 명시적으로 업캐스팅을 수행할 수 있습니다. 암시적으로 다운캐스팅은 불가능합니다.
삼. 자식 클래스에서는 부모 클래스의 메서드와 변수에 접근할 수 있습니다. 두 클래스(부모 및 자식)의 메서드와 변수에 액세스할 수 있습니다.
4. 하위 클래스의 일부 지정된 메소드에 액세스할 수 있습니다. 두 클래스의 모든 메서드와 변수는 다운캐스팅을 수행하여 액세스할 수 있습니다.
5. 상위 p = 새 상위() 부모 p = 새로운 자식()
자식 c = (자식)p;