>  기사  >  Java  >  재정의되거나 충돌할 때 Java에서 기본 메서드를 호출하는 방법은 무엇입니까?

재정의되거나 충돌할 때 Java에서 기본 메서드를 호출하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-17 18:36:02836검색

How to Call Default Methods in Java When Overridden or Conflicting?

Java에서 기본 메소드 호출

질문:

기본 메소드를 호출하는 것이 가능합니까? 메소드 구현이 재정의되었거나 여러 인터페이스의 구현과 충돌하는 경우? 다음 코드를 고려하십시오.

interface A {
    default void foo() {
        System.out.println("A.foo");
    }
}

class B implements A {
    @Override
    public void foo() {
        System.out.println("B.foo");
    }
    public void afoo() {
        // How to invoke A.foo() here?
    }
}

답변:

기본 메소드 A.foo()는 A.super.foo() 구문을 사용하여 명시적으로 호출할 수 있습니다. . 이 구문을 사용하면 메소드가 재정의되었거나 충돌로 인해 사용할 수 없는 경우에도 메소드의 원래 구현에 액세스할 수 있습니다.

예:

A를 호출하려면 클래스 B의 afoo() 메소드에서 foo()를 사용하면 다음을 사용할 수 있습니다. 코드:

public void afoo() {
    A.super.foo();
}

추가 용도:

super 구문은 다른 인터페이스에서 기본 메서드에 액세스하는 데에도 사용할 수 있습니다. 예를 들어 인터페이스 C에도 기본 메서드 foo()가 있는 경우 다음과 같이 클래스 B의 두 구현에 모두 액세스할 수 있습니다.

public void bah() {
    A.super.foo(); // Original `foo()` from interface `A`
    C.super.foo(); // Original `foo()` from interface `C`
}

super 구문을 사용하면 호출할 기본 구현을 선택적으로 선택할 수 있습니다. 또는 자신만의 방법으로 여러 구현을 결합할 수 있습니다.

위 내용은 재정의되거나 충돌할 때 Java에서 기본 메서드를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.