문제

Java에는 다음 인터페이스가 있습니다

public interface IFoo
{
    public abstract void foo();
    public void bar();
}

foo ()와 bar ()의 차이점은 무엇입니까? 초록을 언제 사용해야합니까?

둘 다 미묘한 것을 놓치지 않는 한 내가 원하는 것을 성취하는 것 같습니다.

업데이트 복제 왜 Java 인터페이스 방법을 추상적으로 선언합니까?

도움이 되었습니까?

해결책

기능적 차이가 없습니다. Java 인터페이스에는 구현이 제공되지 않으므로 모든 메소드 선언은 암시 적으로 추상적입니다.

1] 참조 : http://java.sun.com/docs/books/tutorial/java/iandi/abstract.html

위의 직접 견적 양식 :

참고 : 인터페이스의 모든 메소드 (인터페이스 섹션 참조)는 암시 적으로 추상적이므로 추상 수정자는 인터페이스 메소드와 함께 사용되지 않습니다 (필요하지 않습니다).

다른 팁

인터페이스 방법은 둘 다입니다 public 그리고 abstract 기본적으로. 사이에는 차이가 없습니다 foo() 그리고 bar() 그리고 당신은 모든 것을 안전하게 제거 할 수 있습니다 public 그리고 abstract 키워드.

당신은 아무것도 놓치지 않습니다. 로부터 자바 언어 사양:

인터페이스 본문의 모든 방법 선언은 암시 적으로 추상적이므로, 그 몸은 항상 블록이 아닌 세미콜론으로 표시됩니다.

인터페이스 본문의 모든 방법 선언은 암시 적으로 공개됩니다.

다시 말해, 당신은 그것을 생략 할 수 있습니다 public 뿐만 아니라 abstract 인터페이스 방법에서.

중복 (두 선언 사이에는 차이가 없음)이 명시 적으로 낙담했습니다. 섹션 9.4 Java 언어 사양 :

이전 버전의 Java 플랫폼과의 호환성을 위해, 스타일의 문제로 인터페이스에서 선언 된 방법에 대한 추상 수정자를 중복적으로 지정하는 것이 허용되지만 권장하지 않습니다.

그리고 public 비슷하게 불필요하고 낙담합니다.

인터페이스 방법에 대한 공개 수정자를 중복적으로 지정하는 것은 허용되지만 스타일의 문제로 강력하게 낙담합니다.

왜 그런지 모르겠어요 public ~이다 강하게 낙담하지만 abstract 방금 낙담했습니다 ...

인터페이스의 모든 메소드는 추상적이므로 둘 다 동일하게 달성합니다.

abstract 이 시나리오에서는 불필요합니다 (인터페이스에서 메소드를 표시합니다. public).

당신은 할 것입니다 대신에 하위 클래스로 재정의를 시행하기 위해 추상 클래스의 메소드에서 이것을 사용하십시오.

선언 사이에는 차이가 없습니다. 개념적으로 인터페이스의 모든 방법은 추상적입니다.

차이가 없습니다. Java 인터페이스의 모든 방법은 항상 추상적입니다.

이 링크의 첫 번째 메모를 참조하십시오.http://java.sun.com/docs/books/tutorial/java/iandi/abstract.html

foo ()와 bar ()는 인터페이스 내부에서 선언 될 때 추상적입니다. 여기에 사용한 초록 단어는 의미가 없습니다. 당신은 그것을 더 잘 제거합니다.

Java의 인터페이스는 완전 추상 클래스와 "어쨌든"와 같으므로 인터페이스의 메소드 선언에 "Abstract"키워드를 추가하는 것은 메소드와 관련이 없습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top