자바

← 목록
1 / 2

자바 인터페이스 구현 실습 — 인터페이스를 구현하는 다양한 방법 알아보기

대상 자바 기초 문법(클래스, 메소드, List)을 알고 인터페이스 개념을 막 접한 입문자

목표 Comparator 인터페이스를 구현하는 법을 익히고, 외부 클래스부터 람다까지 단계별로 줄여가며 "왜 이렇게 줄일 수 있는가"를 체득한다

완성물 List<String> 을 역정렬하는 코드를 여섯 가지 방식으로 작성하고, 마지막에 내장 유틸 Comparator.reverseOrder() 로 한 줄로 마무리하는 App.java

Java 8 이상 JDK 가 설치되어 있어야 합니다. javac 과 java 명령이 터미널에서 동작하는지 확인하세요.


STEP 1 / 13인터페이스의 두 가지 얼굴 다시 보기

0개 완료 · 13개 남음

  1. 자바에서 인터페이스란 두 개의 객체 또는 하나의 객체와 기능이 결합하기 위한 약속을 의미합니다. 지금은 구현체가 존재하지 않지만 나중에 그것을 결합할 때의 합을 맞추기 위한 약속이죠.

    그런데 그런 합을 맞추기 위한 약속에는 자세히 보면 종류가 다른 두 가지가 있다는 것을 알 수 있습니다.

    하나는 캡슐(역할자)을 구현하겠다는 약속이고 또 하나는 일부 기능(약할자의 일부 기능)을 구현하겠다는 약속입니다.

    이번 실습은 그 중 "일부 기능(메소드)을 구현하겠다는 약속”을 정의한 인터페이스, 그것을 구현하는 다양한 방법에 대해서 알아보겠습니다.

    이런 인터페이스는 시대적인 변천사에 대해서 그것을 구현하는 방법이 여러번 변화를 가져왔는데, 그것이 어떻게 변해왔으며 지금은 어떤식으로 구현하고 있는지 하나씩 알아보도록 하겠습니다.

    그렇다면 우리가 선택해야할 인터페이스 구현방법은 무엇일까요?

    맞습니다. 가장 나중에 설명하는 방식이 우리가 사용해야 할 가장 좋은 방법이 되겠습니다. 따라서 그 방법 이전 내용은 가볍게 그냥 경험하시면 됩니다. 모르면 안되나요? (흠 ~ 그러면 나중에 그 방법을 만났을 때 그것이 새로운 방법이라고 생각할 수도 있으니까요.)

    1-1. 두 가지 인터페이스 비교

    구분 캡슐의 서비스를 약속한 인터페이스 일부 기능을 약속한 인터페이스
    예시 List, Map, Set Comparator, Runnable, Function
    약속 내용 "데이터 관리를 위한 서비스들"의 약속 (add, get, size 등) 캡슐의 서비스를 위해 필요한 ("값의 비교, 변환 등") 구현을 위한 약속 (compare, run, apply 등)
    구현체 ArrayList, HashMap 등 우리가 직접 만들거나 람다로 대체

    1-2. 이번 실습의 목표

    List.sort() 메소드는 정렬할 때 그 정렬 기준을 사용자로부터 넘겨 받습니다. 그 때 우리가 넘겨줘야 할 것은 Comparator 를 구현한 구현체이며 이 객체가 하는 역할은 "두 객체를 비교해서 순서를 알려주는 메소드 하나"를 약속한 인터페이스입니다.

    핵심: List 는 데이터를 관리하는 역할자로 정렬 기능을 서비스하고 있습니다. 그리고 정렬을 서비스 하기 위해 "비교하는 규칙"을 넘겨 받기 위한 compare 메소드를 Comparator 인터페이스 이름으로 정의하였습니다. 우리는 이 인터페이스(약속)를 구현해서 넘겨주는 방식으로 정렬을 수행할 수 있습니다.

    ✅ 확인

    • List 인터페이스와 Comparator 인터페이스의 차이가 "데이터를 선형으로 관리하는”의 역할자 대한 약속 vs 정렬을 위한 일부 기능("동작 규칙")에 대한 약속 임을 설명할 수 있습니다.

    🎓 newlec 쌤의 코멘트

    어찌되었든 인터페이스는 나중에 무엇을 구현해주겠다는 약속입니다. 역할(Role) 자의 서비스 목록을 약속하든 어떤 연산을 약속하든, 그 모든 것은 약속이고, 그 약속에 이름을 붙여서 정의하는 도구는 인터페이스입니다.

    List 는 "목록을 관리”하는 서비스 역할을, Comparator 는 "비교연산”이라는 기능을 약속한 인터페이스입니다. 이번 실습에서는 Comparator 라는 기능을 약속한 인터페이스를 다양한 방법으로 구현해볼 예정입니다.


이어지는 내용은 회원만 볼 수 있어요

뉴렉처에 로그인하면 전체 학습 자료를 열람할 수 있습니다.

로그인하기