일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정렬알고리즘
- 가상환경
- pipenv
- 컴퓨터과학
- 장고
- richtext
- 알고리즘
- popupmenubutton
- FLUTTER
- Django
- 포인터
- python3
- 건대입구맛집
- 코딩독학
- c언어문자열
- 부스트코스
- 속초여행
- BeautifulSoup
- 남양주맛집
- JavaScript
- 강원도속초맛집
- 추상클래스
- Python
- 성수동카페
- 자바
- DOM
- 상속
- 노마드코더
- removetooltip
- 아스키코드
- Today
- Total
YUYANE
JAVA/ 상속 - 캐스팅 (업캐스팅, 다운캐스팅) 본문
1. 형변환(casting)
- 캐스팅 : '형변환'으로, 모든 변수에는 타입이 있다.(int, boolean, String 등)
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 '형변환(casting)'이라고 한다.
- 예시
int a = (int) 1.3;
(1.3은 원래 double의 형태이나, 변수 타입에 맞게 int로 형변환 시켜줌)
- 형변환의 규칙
(1) boolean을 제외한 나머지 7개의 기본형은 서로 형변환 가능
(2) 기본형과 참조형은 서로 형변환 불가
(3) 서로 다른 타입 간의 변수를 연산 할 때 두 가지 변수의 타입을 일치 시켜주는 것이 원칙
- 생략 시에도 컴파일러가 자동으로 형변환을 시켜주는 경우가 있다.
- 단, 변수가 저장할 수 있는 값의 범위보다 더 큰 값을 저장하는 경우에는 명시적으로 형변환 해주지 않으면 에러 발생. 아래에서 더 살펴보자.
2. 업캐스팅
- 본래 타입보다 데이터를 많이 지닌 타입으로 형변환 하는 것
- 예시
자식클래스에서 포함하는 데이터는 부모클래스보다 범위가 넓다. 부모클래스 타입의 변수를 자식 클래스 타입으로 형변환하는 것은 업캐스팅의 예시가 될 수 있다.
Parent parent = new Child( );
Child 클래스가 저장하는 데이터의 범위가 더 넓으므로, 명시적으로 (Child)라고 형변환해주지 않았지만, 컴파일러가 자동형변환을 해줬다. 반대의 경우(Child->Parent)에는 오류 발생한다.
3. 다운캐스팅
- 위의 경우와 반대로 Child 클래스를 Parent클래스로 형변환 하는 것은 다운캐스팅의 예가 될 수 있다.
- Child child = (Child)new Parent( );
코드에 빨간 줄은 없지만, 실제로 동작 시 컴파일러는 Parent 클래스의 객체는 Child 클래스로 형변환이 불가한 것을 알고 런타임 오류 발생시킨다. 이유는, Child 클래스가 포함 할 데이터를 JVM이 추리하지 못하기 때문.
- 예외
Parent parent = new Child( ) ; // Parent 클래스의 객체를 Child 클래스로 인스턴스화 앞서 해준 경우에는
Child child = (Child)new Parent( ); // 오류 발생 x
** 참고사이트
** 참고문헌
자바의정석 (남궁 성 지음)
'Programming Languages > JAVA' 카테고리의 다른 글
JAVA / 각 자릿수의 합을 구하기 (백준 4673번) (0) | 2020.11.23 |
---|---|
JAVA / nextInt( ) 다음에 nextLine( )을 입력 받을 때 생길 수 있는 오류(백준 4344 자바) (0) | 2020.11.20 |
JAVA / split으로 string 문자열 나누어 배열에 저장하기 (백준 8958 자바) (0) | 2020.11.20 |
JAVA / 상속 - 추상 클래스 (0) | 2020.10.02 |
JAVA / 상속 - 생성자 (0) | 2020.10.01 |