📌 캐스팅
- 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다.
- 클래스는 reference 타입으로 분류되므로 이를 참조형 캐스팅(업캐스팅/다운캐스팅)이라 한다.
- 클래스의 캐스팅 목적은 사용할 수 있는 멤버의 갯수를 조절하는 것이다.
🌈 업캐스팅(upcasting)
- 자식 클래스의 객체에 대한 레퍼런스를 부모 클래스 타입으로 변환한다.
- 자식 클래스의 필드나 메소드는 접근 불가하게 되고 부모 클래스만 허용한다.
- 공통적으로 할 수 있는 부분을 만들어 간단하게 다루기 위해서 사용한다.
List<int> l = new ArrayList()<>;
🌈 다운캐스팅(downcasting)
- 부모 클래스의 객체에 대한 레퍼런스를 자식 클래스 타입으로 변환한다.
- 명시적으로 타입 변환을 지정해 주어야 한다.
- 부모 클래스로 업 캐스팅된 자식 클래스를 복구하여, 본인의 필드와 기능을 회복하기 위해 있는 것
Person p;
Student s;
s = (Student)p;
📌 instanceof 연산자
- 업캐스팅을 한 경우, 레퍼런스가 가리키는 객체의 진짜 클래스 타입을 구분하기가 어렵기 때문에 instanceof 연산자를 사용하여 구분한다.
Person jee = new Student();
Person kim = new Professor();
Person lee = new Researcher();
if(jee instanceof Person)
if(jee instanceof Professor)
if(kim instanceof Researcher)