[TIL-260210] 자바 기초: 인터페이스

2026. 2. 17. 13:23·Java
이 글은 2026년 2월 10일에 작성된 글입니다.

Interface

클래스 구현을 위한 기능정의 & 규약.
클래스가 구현해야 하는 메서드를 강제함으로써, 구현된 객체들의 동일한 기능을 보장한다.

  • 인터페이스는 상수 필드, 추상 메서드, default 메서드, static 메서드, private 메서드로 구성된다. (생성자는 없다).
  • 인터페이스의 변수는 컴파일 과정에서 public static final 키워드가 붙어 상수로 자동 변환된다.
  • 인터페이스의 메서드는 public abstract를 명시하지 않아도 컴파일 과정에서 추상 메서드로 자동 변환된다.
// 인터페이스
public interface MemberService {
    // 상수. public static final 생략 가능
    double PI = 3.14;
    // 추상 메서드. public abstract 생략 가능
    void regist();
    void unregist();
    void updateMyInfo();
}
// 구현 클래스
public class MemberServiceImpl implements MemberService {
    // 추상 메서드 구현
    public void regist(){};
    public void unregist(){};
    public void updateMyInfo(){};
}
  • 인터페이스는 그 자체로 인스턴스를 생성할 수 없다.
  • 인터페이스를 구현하는 클래스는 반드시 인터페이스의 추상 메서드들을 구현해야 한다.
  • 한 클래스는 여러 인터페이스를 구현할 수 있다. (다중 구현)
  • 한 인터페이스는 여러 인터페이스를 상속받을 수 있다. (다중 상속)

 

추상 클래스랑 뭐가 다른가?

인터페이스는 하위 클래스가 상위 클래스의 추상 메서드를 구현해야 하는 책임을 갖는 추상 클래스의 특징과 비슷하다. 사실 이 둘이 큰 차이가 없는 건 맞지만 그래도 분명한 차이가 있다.

  1. 나를 구현하는 애들은 내가 정의한 추상 메서드들을 무조건 구현해야 돼 👉 강제성 (이건 공통점)
  2. 상속처럼 너무 밀접한 관계가 되기는 싫어 👉 느슨한 관계
  3. 하나의 클래스에 여러 역할(기능 규약)을 부여하고 싶어 👉 다중 구현 가능

⇒ 기능 구현의 강제성은 살리고 싶고, 관계는 느슨하게 하고 싶어서 만든 게 인터페이스 (다중 구현도 가능)

 

디폴트 메서드

인터페이스에서 구현 코드까지 작성한 메서드.

default void method(){
    // 구현
}

원래 인터페이스는 구현된 메서드를 작성하면 오류가 나지만 default 예약어를 쓰면 구현된 메서드를 작성할 수 있다.
디폴트 메서드는 이후 인터페이스를 구현할 클래스가 사용할 기본 기능이 된다.

 

static 메서드

static void method(){
    // 구현
}

인터페이스에서는 static 예약어를 사용하여 정적 메서드를 추가할 수 있다.

인터페이스 이름으로 직접 참조하여 정적 메서드를 호출할 수 있다.

 


❕느낀점

어제 추상 메서드를 배우면서 그럼 인터페이스랑은 뭐가 다른거지? 하는 의문이 있었는데 오늘 인터페이스를 자세히 배우며 차이점에 대해 확실히 정리가 되었다. 그리고 추상 메서드보다 중요한 것이 인터페이스라고 배웠으니 인터페이스를 잘 활용할 수 있게 공부해야겠다고 생각했다.

'Java' 카테고리의 다른 글

[TIL-260212] 자바 기초: 내부 클래스, 스레드, 람다, 스트림  (0) 2026.02.17
[TIL-260211] 자바 기초: 예외처리와 제네릭, 컬렉션 프레임워크  (0) 2026.02.17
[TIL-260209] 자바 기초: static, 상속, 추상 클래스  (0) 2026.02.17
[TIL-260206] 자바 기초: 메소드와 생성자  (0) 2026.02.17
[TIL 260205] 자바 기초: 배열과 ArrayList, Map, 그리고 클래스  (0) 2026.02.17
'Java' 카테고리의 다른 글
  • [TIL-260212] 자바 기초: 내부 클래스, 스레드, 람다, 스트림
  • [TIL-260211] 자바 기초: 예외처리와 제네릭, 컬렉션 프레임워크
  • [TIL-260209] 자바 기초: static, 상속, 추상 클래스
  • [TIL-260206] 자바 기초: 메소드와 생성자
hee-on
hee-on
작은 기록을 모아 꾸준히 성장해 나가는 개발 기록 공간입니다💻
  • hee-on
    희온의 dev log
    hee-on
  • 전체
    오늘
    어제
    • 전체 글 (46)
      • About (2)
      • Java (15)
      • Spring (4)
      • Spring Boot (2)
      • Front-end (6)
      • 알고리즘 (6)
        • Do it 알고리즘 코딩테스트 (자바편) (4)
      • DB (7)
      • Git (1)
      • 개발 지식 (2)
      • 일상 || 잡담 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MVC
    til
    개발자
    안티그래비티
    취준
    Spring
    JSP
    JavaScript
    알고리즘
    SQL
    Servlet
    SpringBoot
    깃허브 코파일럿
    react
    백엔드
    Java
    코테
    백준
    소개
    db
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hee-on
[TIL-260210] 자바 기초: 인터페이스
상단으로

티스토리툴바