안녕하세요
이번에는 자바의 캐스팅에 대하여 알아보려고합니다.
캐스팅이란 무엇인가!
캐스팅(Casting)이란?
int num = 1;
이렇게 int형 자료형을 가진 num 변수를 선언하는건 전혀문제가 되지 않습니다.
int num = 10.24;
하지만 int형 변수에 10.0이라는 값을 넣고 컴파일을 해보시면 자료형과 그 값이 잘못되었다고 컴파일 오류가 발생할꺼에요.
이처럼 10.0이라는 실수를 정수형 자료형인 int에 값을 넣어주려면 캐스팅을 하여야합니다.
int num = (int)10.24;
이런식으로 값앞에 (int)라는 키워드를 이용하여 실수를 정수형으로 형변환하여 int형 자료형 num에 값을 넣어줄 수 있습니다.
컴파일을 해보시면 오류 없이 정상 작동할꺼에요.
class Main { public static void main(String args[]){ int num = (int)10.24; System.out.println(num); } }
직접 출력문을 통해 값을 출력해보면 10.24의 소수부분은 삭제되고 10이 출력될꺼에요.
Why?
정수형 자료형인 int로 형변환되었기 때문에 실수부분은 값이 삭제되기 때문입니다. 이렇게 형변환은 값의 손실이 발생할 수 있기때문에 잘 사용하셔야합니다.
자 그럼 기본적인 형변환에 대하여 알아보았으니, 다음으로 업캐스팅과 다운캐스팅에 대하여 알아보도록하겠습니다.
업캐스팅이란?
업캐스팅은 상속관계은 부모클래스와 자식클래스간의 형변환중의 하나이며,
자식클래스에서 부모클래스로 형변환하는 것을 업캐스팅이라고한다.
업캐스팅의 경우 기본적으로 하위 클래스의 형에서 상위 클래스의 형으로 캐스팅 시키는것이라 형만 정확하다면 묵시적으로 캐스팅이 가능하다.
public class Person {...} public class Student extends Person {...} Person human = new Student();
Person이라는 부모클래스와 Student라는 자식클래스가 있는데 Person클래스가 Student의 클래스보다 더 넓은 범위이기 때문에 묵시적으로 형변환이 가능하다.
다운캐스팅이란?
public class Person {...} public class Student extends Person {...} Person human= new Student(); //업캐스팅 Student gilDong = (Student)human; //다운캐스팅
예제처럼 human이라는 Person형 객체를 업캐스팅을 통하여 만들어주었고, human을 다시 Student형 객체로 다운캐스팅을 하여 gilDong이라는 Student형 객체를 만들어주었습니다.
이런식으로 기본적인 캐스팅의 정의와 다운캐스팅, 업캐스팅을 알아보았습니다.
'프로그래밍 > java' 카테고리의 다른 글
java 추상클래스와 인터페이스 정리 (0) | 2019.05.07 |
---|---|
java 제네릭 정리 (0) | 2019.05.02 |
java 상속, super 정리 (0) | 2019.04.26 |
java 컬렉션 ArrayList, HashMap 정리 (0) | 2019.04.25 |
java 예외처리 정리 (try-catch, finally, throws, throw) (1) | 2019.04.24 |
댓글