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
TAGS.

Comments