Casting
형변환 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
Primitive 타입
- 묵시적 형 변환
- 작은 데이터 타입에서 큰 데이터 타입으로 형 변환
- 값에 대한 손실이 발생할 가능성이 없음
- 따로 연산자가 필요없다.(JVM이 서비스 해줌)
- 명시적 형 변환
- 큰 데이터 타입에서 작은 데이터 타입으로 형 변환
- 값에 대한 손실이 발생할 가능성이 있음
- 명시적으로 형변환 연산자를 써줘야 한다.
byte → short → int → long → float → double
char
Reference 타입
- 사용할 수 있는 멤버의 갯수를 조절하는 것
- 값이 달라지는 것이 아님
- 조상 , 자손 관계의 참조변수는 서로 형 변환 가능
업캐스팅(UpCasting)
- 업캐스팅은 자식 클래스가 부모 클래스 타입으로 캐스팅 되는 것이다.
- 업캐스팅은 캐스팅 연산자 괄호를 생략할 수 있다
- 단, 부모 클래스로 캐스팅 된다는 것은 멤버의 갯수 감소를 의미한다.이는 곧 자식 클래스에서만 있는 속성과 메서드는 실행하지 못한다는 뜻이다.
- 업캐스팅을 하고 메소드를 실행할때, 만일 자식 클래스에서 오버라이딩한 메서드가 있을 경우, 부모 클래스의 메서드가 아닌 오버라이딩 된 메서드가 실행되게 된다.
다운 캐스팅(DownCasting)
- 다운캐스팅은 거꾸로 부모 클래스가 자식 클래스 타입으로 캐스팅 되는 것이다.
- 다운캐스팅은 캐스팅 연산자 괄호를 생략할 수 없다
- 다운캐스팅의 목적은 업캐스팅한 객체를 다시 자식 클래스 타입의 객체로 되돌리는데 목적을 둔다. (복구)
instanceof 연산자
- 참조 캐스팅을 잘못했다가 런타임 환경에서 에러가 나 프로그램이 종료 되버리면 서비스에 크나큰 차질이 생기게 된다.
- 따라서 코드 디버깅을 많이 하여 미리 예방하는 것이 베스트이지만, 이마저도 부족하면 직접 업캐스팅 / 다운캐스팅 유무를 확인하여 참조 캐스팅 동작을 결정하면 된다.
- 이때 사용되는 것이 instanceof 연산자인데, 이 연산자는 어느 객체 변수가 어느 클래스 타입인지 판별해 true/false를 반환해준다.
'Computer science > JAVA' 카테고리의 다른 글
| Instrinsic Lock (0) | 2023.01.08 |
|---|---|
| Thread (1) | 2023.01.02 |
| Object Class (0) | 2023.01.01 |
| String Class (0) | 2023.01.01 |
| Serialization(직렬화) (0) | 2022.12.25 |