2013-08-28 3 views
0

항상 스레드에서 실행해야하는 UserInterface 인터페이스를 구현하려고합니다 (따라서 Runnable). 그래서 SpecificInterfaceUserInterface를 구현하는이 같은 코드를 가지고 :Java 실행 파일 및 인터페이스

UserInterface myUI = new SpecificInterface(...); 
Thread thread = new Thread(myUI); 
thread.start(); 

을하지만 인터페이스는 다른 인터페이스를 구현할 수 없기 때문에 UserInterfaceRunnable을 구현 할 수 없기 때문에이 분명 작동하지 않습니다. 그리고 난 그저 그 인터페이스를 사용하는 지점을 패배 이후 SpecificInterface runnable 만들 수 없습니다.

어떻게하면됩니까? UserInterface을 추상 클래스로 만들거나 추상 클래스를 만들어 UserInterfaceRunnable을 구현하고 내 UI를 상속 받거나 ..? 나는 왜 "단순한"해결책이 효과가 없는지 혼란 스럽다.

인터넷 검색은 도움이되지 않았지만, "Runnable interface"를 사용하는 방법을 알려주는 링크가 있습니다.

+0

'UserInterface' 및'SpecficInterface' 클래스를 표시 하시겠습니까? –

+0

@ JoshM 그들은 너무 커서 여기에 표시 할 수 없습니다. 하지만 기본적으로 그들은 run() 메소드에서 커스텀 이벤트 dispatcher 루프를 가지고 있습니다 (이것은 연습용입니다). – Thomas

답변

3

인터페이스는 다른 인터페이스를 확장 할 수 있습니다.

interface UserInterface extends Runnable { 
    void someOtherFunction(); 
    // void run() is inherited as part of the interface specification 
} 

public class SpecificInterface implements UserInterface { 
    @Override 
    public void someOtherFunction() { 
     . . . 
    } 

    @Override 
    public void run() { 
     . . . 
    } 
} 
+0

'UserInterface'는'Runnable'을'extend'해야합니다. 'SpecificInterface'는'UserInterface'의 하위 인터페이스입니다 (선언문을 보면 판단 할 수 있습니다). –

+0

@ JoshM - 죄송합니다. 나는 거꾸로 이름을 가지고 있었다. –

+0

그 덕분에, 고마워! 'extend' 인터페이스에 대해 몰랐습니다! – Thomas