공부/개발

인터페이스 강제 타입 변환(casting)

티오비 2017. 6. 13. 22:44

인터페이스 강제 타입 변환(casting)

구현 객체가 인터페이스 타입으로 자동 변환하면, 인터페이스에 선언된 메소드만 사용 가능하다는 제약 사항이 따릅니다.

예를 들어,

 
xxxxxxxxxx
public interface RemoteControl
{
    void turnOn();
}
 
xxxxxxxxxx
public class Algorithm implements RemoteControl
{
    @Override
    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
{
    @Override
    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