해당 도서에는 일반적인 의미에서의 인터페이스와 자바에서의 인터페이스에 대한 혼동을 막기 위해 표기를 달리합니다.
일반적인 의미의 인터페이스 ⇒ 인터페이스
자바의 인터페이스 ⇒ Interface
1.1 리스트가 두 종류인 이유
•
자바의 Java Collection Framework(JCF)는 ArrayList와 LinkedList 클래스를 모두 제공함
•
왜 자바는 List 인터페이스에 두 가지 구현을 제공할까?
•
어떤 동작은 ArrayList가 빠르거나 저장 공간을 적게 사용하고,
다른 상황에서는 LinkedList가 빠르거나 메모리 사용이 적음
1.2 자바 interface
자바 interface의 기본적인 개념을 설명하는 장이므로 간략히 작성하였음
•
자바 interface는 메서드 집합을 의미함
•
예를 들어, java.lang 패키지에 정의된 Comparable interface의 소스 코드는 아래와 같음
•
Comparable interface를 구현하고 있는 java.lang.Integer 클래스의 소스 코드는 아래와 같음
1.3 List interface
•
Java Collection Framework(JCF)는 List라는 interface를 정의하고 ArrayList와 LinkedList라는 두 구현 클래스를 제공함
•
interface는 List가 된다는 의미가 무엇인지 정의함
•
ArrayList와 LinkedList 클래스는 List에서 정의한 메서드 집합을 제공하므로 상호교환(= 서로 대체)될 수 있음
•
List로 동작하는 메서드는 ArrayList, LinkedList 또는 List를 구현하는 어떤 객체와도 잘 동작함
•
위 예제와 같이 라이브러리를 사용할 때 코드는 오직 List와 같은 인터페이스만 의존하고 ArrayList 클래스와 같은 특정 구현에 의존해서는 안됌
•
이러한 방식으로 하면 나중에 구현이 변경되어도 인터페이스를 사용하는 코드는 그대로 사용할 수 있음
1.4 실습 1
실습 목표: LinkedList를 ArrayList 클래스로 교체하고, ListClientExampleTest 코드를 통과시키세요.
ListClientExample.java
ListClientExample.java