본문 바로가기
프로그래밍/java

java 캐스팅정리

by 뜨끔쓰 2019. 4. 30.
728x90
728x90

안녕하세요


이번에는 자바의 캐스팅에 대하여 알아보려고합니다.


캐스팅이란 무엇인가!




캐스팅(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형 객체를 만들어주었습니다.


이런식으로 기본적인 캐스팅의 정의와 다운캐스팅, 업캐스팅을 알아보았습니다.

728x90
반응형

댓글