메서드 이름 충돌이 있는 인터페이스 상속
여러 인터페이스가 동일한 이름과 서명을 가진 메서드를 정의하고 단일 클래스로 구현되는 경우 컴파일러는 다음을 고려하여 재정의된 메서드를 식별합니다. 다음:
호환성:
인터페이스의 메서드가 메서드와 동일한 경우(호환 가능한 반환 유형 및 매개변수 유형이 있음) 하나의 메서드만 상속됩니다. 이 경우 컴파일러는 메서드가 속한 인터페이스를 구분할 필요가 없습니다.
예:
다음 코드를 고려하세요.
interface A { int f(); } interface B { int f(); } class Test implements A, B { // Only one @Override annotation required @Override public int f() { // Method implementation here return 0; } }
이 시나리오에서 Test의 f 메서드는 A.f와 A.f 모두에 대한 구현으로 간주됩니다. B.f.
비호환성:
인터페이스의 메서드가 메서드와 동일하지 않은 경우(호환되지 않는 반환 유형 또는 매개변수 유형이 있는 경우) 컴파일러는 컴파일을 실행합니다. error.
예:
다음 코드에서 A.f 및 B.f의 반환 유형이 다음과 같기 때문에 Test의 f 메서드는 컴파일 오류를 발생시킵니다. 다름:
interface A { void f(); } interface B { int f(); } class Test implements A, B { @Override public int f() { // Method implementation here return 0; } }
결과:
여러 인터페이스에서 상속된 메서드가 호환되는 한, 어떤 메서드가 어떤 인터페이스에 속하는지 구분할 필요가 없습니다. 컴파일러는 이를 클래스에 의해 구현되는 단일 메서드로 처리합니다.
위 내용은 Java는 인터페이스 상속 시 메소드 이름 충돌을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!