Java 인터페이스 구현 및 메소드 이름 충돌
Java에서 여러 인터페이스를 구현할 때 메소드 이름 충돌이 발생할 수 있습니다. 이는 서로 다른 목적을 가진 인터페이스가 동일한 시그니처를 사용하여 메서드를 정의할 때 발생합니다. 명시적인 인터페이스 구현이 동일한 메소드의 다중 구현을 허용하는 C#과 달리 Java는 유사한 메커니즘을 제공하지 않습니다.
Java 제한 이유
Java는 잠재적인 모호함과 혼란을 방지하기 위해 동일한 방법을 사용합니다. 이렇게 하면 메서드 호출이 호출 인터페이스에 관계없이 항상 동일한 기본 구현을 호출하게 됩니다.
예
다음 코드를 고려하세요.
interface ISomething { void doSomething(); } interface ISomething2 { void doSomething(); } class Impl implements ISomething, ISomething2 { void doSomething() {} // Java only allows one implementation of this method. }
이 예에서는 각 Impl 클래스에 doSomething() 메서드의 두 가지 개별 구현을 정의할 수 있는 방법이 없습니다. 인터페이스.
해결 방법
호출 인터페이스를 기반으로 고유한 동작이 필요한 경우 특정 구현을 구현하는 개별 클래스에 위임하는 복합 클래스를 생성하여 구성적 접근 방식을 사용하는 것이 좋습니다. 인터페이스:
class CompositeClass { ISomething class1; ISomething2 class2; void doSomething1(){class1.doSomething();} void doSomething2(){class2.doSomething();} }
이 솔루션에서 CompositeClass는 특정 클래스에 대해 별도의 클래스를 위임하면서 두 인터페이스를 모두 구현하기 위한 외관을 제공합니다. 메소드 구현.
위 내용은 다중 인터페이스를 구현할 때 Java는 메소드 이름 충돌을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!