다음 메서드 헤더를 가진 인터페이스를 선언하자.
public interface IntSequence {
boolean hasNext();
int next();
}
이 메서드들을 구현할 필요는 없지만, 원한다면 기본 구현을 작성할 수도 있다(3.2.2 기본 메서드 참고). 기본 구현을 작성하지 않고 선언만 한 메서드를 추상(abstract) 메서드라고 한다.
Note ≣
인터페이스의 모든 메서드는 자동으로 public이 된다. 그러므로 hasNext와 next를 public으로 선언할 필요 없다. 일부 프로그래머는 의도를 더 명확하게 드러내려고 public으로 선언하기도 한다.
인터페이스의 메서드로도 average 메서드를 구현할 수 있다.
public static double average(IntSequence seq, int n) {
int count = 0;
double sum = 0;
while (seq.hasNext() && count < n) {
count++;
sum += seq.next();
}
return count = = 0 ? 0 : sum / count;
}