2014-04-06 3 views
1

클래스의 몇 가지 메서드에 대해 서명을 강제로 적용 할 수 있습니까?클래스의 몇 가지 메서드에 대한 강제 서명

public interface MyInterface 
{ 
    public void method(int a); 
} 

내가 MyInterfaceClass의 각 방법은 동일한 서명을 가지고있는 방식으로 클래스 MyInterfaceClass에서 MyInterface을 구현하려는 :

는이 전 Interface하는 MyInterface 있다고 가정 해 봅시다?

public class MyInterfaceClass implements MyInterface 
{ 
    public void method_A(int a) { /*something */ } 
    public void method_B(int a) { /*something */ } 
    public void method_C(int a, int b) { /*something */ } // ERROR cause of signature, won't compile 
} 

MyInterfaceClass에는 알 수없는 번호가 있습니다.

+0

그래서 모든 메소드가 구현하는 인터페이스의 단일 메소드와 동일한 서명을 갖는 클래스를 갖고 싶습니까? 나에게 반성하는 일처럼 들린다 ... – Azar

+0

유일한 차이점은 매개 변수의 길이 인 경우 varargs 매개 변수라고 생각할 수 있습니다. – csmckelvey

+0

컴파일 오류가 필요합니까? 당신이 "컴파일러"영역에서 놀 필요가있는 것처럼 나에게 소리. –

답변

1

나는 당신이 여기서 무엇을하고 있는지 정확하게 말할 수 없습니까?

  1. 개인 정보 보호 수준 (공공, 민간 등)
  2. 반환 형식
  3. 메소드 이름 (대소 캡)
  4. 매개 변수 (: 자바에서 메서드의 서명은 6 개 요소로 구성되어 있습니다 종류와 위치, method_a (문자열 B, A INT)
  5. 는 예외 목록을 확인)! = method_a (INT 문자열 B) 당신이 인터페이스의 메소드를 구현하고자하는 경우, 당신이 있어요

이름을 포함하여이 모든 기준과 일치해야합니다. 또한 클래스에서 한 번만 인터페이스의 메서드를 구현할 수 있습니다. 같은 args, 이름, 프라이버시 레벨 등으로 메소드를 구현하려고하면 클래스가 컴파일되지 않습니다. 자바 가상 머신은 같은 클래스에서 두 번 구현 한 경우 어떤 메소드를 호출해야하는지 어떻게 알 수 있습니까?

왜 한 클래스에서 같은 방법을 두 번 구현하고 싶습니까? 어쩌면 당신은 당신의 디자인을 향상 시키려고하지만 잘못된 질문을하고 있습니까?

+0

클래스의 메서드가 규칙을 따르는 클래스를 만들고 싶습니다. 클래스의 프라이버시 수준, 반환 유형, 매개 변수, 확인 된 예외 목록이 동일합니다. 그 (것)들 사이 유일한 유일한 것은 이름이다 ... – hudac

+1

당신은 절대적으로 그 유사성을 가진 다수 방법을 실행할 수있다. 그러나 인터페이스가없는 메소드를 구현하려는 경우 인터페이스 메소드와 동일한 매개 변수, 예외, 리턴 유형 (등) 및 동일한 이름을 가져야합니다. –

0

위의 코드 샘플에서 MyInterfaceClass가 컴파일되지 않는 유일한 이유는 method (int a)를 정의하지 않았기 때문입니다. method_C와는 아무런 관련이 없습니다.

인터페이스를 채택 할 때 추상 클래스를 만들지 않는 한 인터페이스의 모든 메소드를 구현해야합니다.