인터페이스 강제 타입 변환(casting)
구현 객체가 인터페이스 타입으로 자동 변환하면, 인터페이스에 선언된 메소드만 사용 가능하다는 제약 사항이 따릅니다.
예를 들어,
xxxxxxxxxx
public interface RemoteControl
{
void turnOn();
}
xxxxxxxxxx
public class Algorithm implements RemoteControl
{
public void turnOn()
{
System.out.println("켜");
}
public void turnOff()
{
System.out.println("꺼");
}
public static void main(String[] args)
{
RemoteControl remoteControl = new Algorithm();
remoteControl.turnOn();
remoteControl.turnOff(); // 제약사항 때문에 선언되지 않음
}
}
하지만 강제 타입 변환을 해 다시 구현 클래스 타입으로 변환하면 구현 클래스의 필드와 메소드를 사용할 수 있습니다.
xxxxxxxxxx
public class Algorithm implements RemoteControl
{
public void turnOn()
{
System.out.println("켜");
}
public void turnOff()
{
System.out.println("꺼");
}
public static void main(String[] args)
{
RemoteControl remoteControl = new Algorithm();
remoteControl.turnOn();
Algorithm algorithm = (Algorithm) remoteControl;
algorithm.turnOff(); //Algorithm class에는 있음
}
}
'공부 > 개발' 카테고리의 다른 글
GO 프로그래밍 - 기초 1편 환경 설정 (0) | 2020.11.11 |
---|---|
swap (0) | 2018.01.10 |
상속 (0) | 2017.12.27 |
헷갈리는 String (0) | 2017.12.26 |
List, Map, Set의 차이점 (0) | 2017.08.21 |