본문 바로가기

Java 공부/신용권의 이것이 자바다

인터페이스 강제타입변환 Casting

반응형

인터페이스 강제타입변환(Casting)이란 인터페이스 타입으로 자동 타입변환 된 후, 다시 구현 클래스 타입으로 변환되는 것을 일컷는다.
구현클래스 타입에 선언된 다른 멤버를 사용하기 위해서 캐스팅이 꼭 필요할 때가 있다.
선언은 다음과 같이 해준다.
구현클래스 변수 = (구현클래스) 인터페이스 변수;
이렇게 하면, 인터페이스 변수가 구현클래스의 변수로 강제 타입변환이 이루어진다.
이제, 코드로 확인해 보자!

이것은 Vehicle 인터페이스 클래스이다.
여기에는 run 메소드만 있다.
Vehicle 을 구현한 버스클래스를 만든다.

Bus 클래스는 Vehicle에서 호출한 run메소드 외에 독자적으로 checkFare메소드를 갖고 있다고 해보자.
그러고 나서 실행클래스를 보자!

인터페이스 타입으로 변환을 먼저 시킨다.
그러면 첫번째, run메소드는 호출이 가능하다.
콘솔창의 맨 위 결과, '버스가 달립니다.'는 이때 호출된 결과값이다.
그러나 인터페이스에서 선언하지 않은 checkFare메소드는 호출되지 못해서 컴파일 오류가 발생한다.
그러나 버스에서는 요금체크는 필수적이다.
그럴 때는 다시 Bus 타입으로 Casting 해줘야 한다.
이를 위해,
Bus bus = (Bus) vehicle;
이라고 코드를 작성한다.
그러고 나서 run() 과 checkFare()를 실행하면, 콘솔창에 위와 같은 결과가 나올 것이다.
두 번째 줄과 세 번째 줄의 '버스가 달립니다.'와 '승차요금을 체크합니다.'는 버스타입로 Casting된 후 도출된 결과값이다.

반응형