1. 자바의 참조형 캐스팅
1-1. 캐스팅
- 형변환(캐스팅, 타입변환)
⇒ 하나의 데이터 타입을 다른 타입으로 바꾸는 것
⇒ Why? 대입 연산자(=) 에서 변수와 값의 타입이 일치하지 않으면 할당이 불가능하기 때문
📌 자바의 데이터형 (타입간의 형변환(casting) 가능)
기본형(primitive type) - Boolean Type(boolean) - Numeric Type(short, int, long, float, double, char)
참조형(reference type) - Class Type - Interface Type - Array Type - Enum Type - 그 외 다른 것들
1-2. 참조형 캐스팅
- 클래스 자료형변환
- 상속 관계에 있는 부모(슈퍼 클래스)와 자식(서브 클래스) 간에는 서로 형변환 가능
⇒ 클래스는 reference 타입 → 참조형 캐스팅(업캐스팅 / 다운캐스팅) - 자식 클래스의 객체는 부모 클래스를 상속 → 부모의 멤버를 모두 가짐 (부모 클래스보다 범위 확장)
- 부모 클래스의 객체는 자식 클래스의 멤버를 모두 가지고 있지는 않음
- 형제 클래스끼리는 참조 형변환 불가
- 참조변수의 형변환 : 사용할 수 있는 멤버의 개수 조절
⇒ 기본형 타입의 형변환 (실수 → 정수) : 값 변경
⇒ 객체 형변환 : 멤버 개수 변경

2. 업캐스팅(UpCasting)
2-1. 정의와 특징
- 자식 클래스 타입 → 부모 클래스 타입
상위클래스형 참조변수 = 하위클래스형 객체 - 캐스팅 연산자 괄호 생략 가능
- 자동형변환(멤버 개수 감소로 메모리 접근에 문제가 없기 때문)
⇒ 자식과 부모의 공통된 범위만 접근 가능
⇒ 자식 클래스에만 있는(확장된) 속성(멤버변수)과 메서드(멤버메서드)에 접근 불가 - 자식 클래스에서 오버라이딩(재정의)한 메서드에는 접근 가능
⇒ 부모 클래스의 메서드가 아닌 오버라이딩 된 메서드가 실행


2-2. 사용 이유
- 상위클래스가 상속관계에 있는 하위클래스들을 연결하기위해 사용
⇒ 공통적인 부분을 하나로 묶어 간단하게 다루기 위함 - for 간단한 코드 & 가독성 & 유지보수성
💡 부모 클래스 타입에서 자식 클래스의 메소드를 실행하는 방법
1. 오버라이딩
2. 다운캐스팅
3. 다운 캐스팅(DownCasting)
3-1. 정의와 특징
- 부모 클래스 타입 → 자식 클래스 타입
- 캐스팅 연산자 괄호 생략 불가
- 객체 멤버 증가 → 불안정(참조변수가 가리키는 객체 파악 불가) → 강제형변환
⇒ 강제형변환시 instanceof 선행 필수
3-2. 사용 이유
- 업캐스팅한 객체를 다시 자식 클래스 타입의 객체로 되돌리기 위함 (복구)
⇒ 확장된 부분에 접근하기위해 사용(자식 본인의 필드와 기능 회복)
⇒ 복구의 개념이므로 UpCasting 전제
3-3. instanceof 연산자
- 다운 캐스팅 할 객체가 오리지날 부모 객체인지, 업캐스팅된 부모 객체인지 구별하는 연산자
- 어느 객체 변수가 어느 클래스 타입인지 판별해 true/false 반환
- 객체에 대한 클래스(참조형) 타입에만 사용 가능 (int, double 등 primitive 타입에는 사용 불가능)
'JAVA > 개별학습' 카테고리의 다른 글
[JAVA] 추상클래스 (0) | 2024.02.21 |
---|---|
[JAVA] 배열 (0) | 2024.02.21 |
[JAVA] 타입변환 (0) | 2024.02.21 |
[JAVA] 자료형 (0) | 2024.02.21 |
[JAVA] 변수 (0) | 2024.02.21 |