2014-11-16 7 views
0
interface TestInterface { 
    void work(); 
} 

class TestClass { 
    public void work(){ 
     System.out.println("Work in CLASS"); 
    } 
} 

public class Driver extends TestClass implements TestInterface { 
    public static void main(String[] args) { 
     new TestClass().work(); 
    } 
} 

TestClass에 동일한 작업 메소드 서명이 존재하기 때문에 왜이 클래스가 잘 컴파일되는지 설명 할 수 있습니까?인터페이스와 클래스에서 동일한 메소드 서명

답변

2

인터페이스를 구현하기위한 요구 사항은 클래스가 인터페이스에서 지정한 모든 메소드의 구현을 제공한다는 것입니다. Driver 클래스는 TestClass에서 정확히 일치하는 메서드를 상속하므로 work()의 필수 구현을 제공합니다. 따라서 TestInterface 구현으로 사용할 수 있습니다.

2

인터페이스의 모든 메소드가 구현 되었기 때문입니다. 구현 클래스에서 @Override annotation을 생략 할 수있는 동일한 이유가 있습니다 (메서드 서명을 변경할 수있는 좋은 방법은 아니며 변경된 메서드를 일부 공용 메서드로 의도하지 않게 구현하는 경우).

그러나 구현하려는 서명이없는 인터페이스를 알고있는 TestClass에 의존하기 때문에 구조가 불안정합니다.