Java에서는 인터페이스에서 초록 메소드를 언제 사용해야합니까?
-
18-09-2019 - |
문제
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"키워드를 추가하는 것은 메소드와 관련이 없습니다!