⚡ 업캐스팅 / 다운캐스팅

sonjh919·2023년 10월 18일
0

Java

목록 보기
22/28
post-thumbnail

📌 캐스팅

  • 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다.
  • 클래스는 reference 타입으로 분류되므로 이를 참조형 캐스팅(업캐스팅/다운캐스팅)이라 한다.
  • 클래스의 캐스팅 목적은 사용할 수 있는 멤버의 갯수를 조절하는 것이다.

🌈 업캐스팅(upcasting)

  • 자식 클래스의 객체에 대한 레퍼런스를 부모 클래스 타입으로 변환한다.
  • 자식 클래스의 필드나 메소드는 접근 불가하게 되고 부모 클래스만 허용한다.
  • 공통적으로 할 수 있는 부분을 만들어 간단하게 다루기 위해서 사용한다.
List<int> l = new ArrayList()<>;

🌈 다운캐스팅(downcasting)

  • 부모 클래스의 객체에 대한 레퍼런스를 자식 클래스 타입으로 변환한다.
  • 명시적으로 타입 변환을 지정해 주어야 한다.
  • 부모 클래스로 업 캐스팅된 자식 클래스를 복구하여, 본인의 필드와 기능을 회복하기 위해 있는 것
Person p;
Student s;
s = (Student)p; // 다운캐스팅

📌 instanceof 연산자

  • 업캐스팅을 한 경우, 레퍼런스가 가리키는 객체의 진짜 클래스 타입을 구분하기가 어렵기 때문에 instanceof 연산자를 사용하여 구분한다.
// 상속은 Researcher->Professor
Person jee = new Student();
Person kim = new Professor();
Person lee = new Researcher();

if(jee instanceof Person) // true
if(jee instanceof Professor) // false
if(kim instanceof Researcher) // Researcher는 Professor의 부모이므로 true

0개의 댓글