Chapter 1. 자바 interface
자바 interFace는 메서드 집합을 의미한다.
이 interface를 구현하는 클래스는 이러한 메서드를 제공해야 한다. 예를 들어 java.lang 패키지에 정의된 Comparable interface의 소스 코드는 다음과 같다.
----------------------------------------------------------------------------------------------------------------------------public interface Comparable<T> {
public int compareTo(T o);
}
----------------------------------------------------------------------------------------------------------------------------
이 interface는 타입 파라미터인 T를 사용하여 Comparable이라는 제네릭 타입을 정의한다. 이 interface를 구현하려면 클래스는 다음과 같아야 한다.
- T 타입을 명시해야 한다.
- T 타입의 객체를 인자로 받고 int를 반환하는 compareTo() 메서드를 제공해야 한다.
예를 들어, java.lang.Integer 클래스의 소스 코드는 다음과 같다.
----------------------------------------------------------------------------------------------------------------------------public final class Integer exstends Number implements Comparable<Integer> {
public int compareto(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal == anotherVal ? 0 : 1));
}
// 생략
}
이 클래스는 Number 클래스를 확장한다. Number 클래스의 메서드와 인스턴스 변수를 상속하고 Comparable<Integer> 인터페이스를 구현한다. 따라서 Integer 객체를 인자로 받고 int를 반환하는 compareTo 메서드를 제공한다.
클래스가 interface를 구현한다고 선언하면 컴파일러는 interface가 정의한 모든 메서드를 제공하는 지 확인한다.
한편, compareTo() 메서드를 구현할 때 종종 ? : 형식으로 쓰인 삼항 연산자를 사용한다. 자세한 내용은 http://thinkdast.com/ternary를 참고하자.
'프로그래밍 > 자료구조 & 알고리즘' 카테고리의 다른 글
Chapter 1 리스트가 두 종류인 이유 (0) | 2019.01.27 |
---|---|
시작에 앞서... (0) | 2019.01.27 |