본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Docs›TIL - Java 기초: 인터페이스 설계
Docs

TIL - Java 기초: 인터페이스 설계

won2dev·2025년 03월 14일
#Java#TIL
TIL - Java 기초: 인터페이스 설계
⚠️ 이 글은 저작권 이슈로 인해 일부 내용이 수정 또는 제거되었습니다.

💬 배운 기술 / 지식

  • 인터페이스란?
  • 인터페이스 선언과 구현
  • 다형성과 인터페이스 활용
  • default, static 메서드
  • 인터페이스 vs 추상 클래스

🎛 인터페이스란?

  • 기능의 뼈대만 정의한 설계서(청사진)
  • 메서드 시그니처만 선언하고, 실제 구현은 하지 않음
  • 구현체(클래스)가 반드시 오버라이딩해서 구체화해야 함
java
public interface Animal {
    void sound();  // 추상 메서드
}
public interface Animal {
    void sound();  // 추상 메서드
}

🧩 구현(implements)과 사용

java
public class Dog implements Animal {
    public void sound() {
        System.out.println("멍멍");
    }
}
public class Dog implements Animal {
    public void sound() {
        System.out.println("멍멍");
    }
}
  • 클래스는 인터페이스를 implements로 구현
  • 하나의 클래스는 여러 인터페이스를 동시에 구현 가능
java
public class RobotDog implements Animal, Machine { ... }
public class RobotDog implements Animal, Machine { ... }

🧪 다형성의 핵심 도구

  • 인터페이스를 사용하면 구현과 무관하게 동일한 방식으로 사용 가능
java
Animal a = new Dog();
a.sound();  // Dog의 구현체에 따라 실행됨
Animal a = new Dog();
a.sound();  // Dog의 구현체에 따라 실행됨
  • 코드 유연성과 확장성 ↑
  • 다양한 구현체가 있을 때 전략 패턴, 의존성 주입 등 설계 패턴과 함께 자주 사용됨

⚙️ default & static 메서드

  • Java 8부터 인터페이스에 구현이 포함된 메서드도 정의 가능
java
public interface Animal {
    default void breathe() {
        System.out.println("숨쉰다");
    }

    static void info() {
        System.out.println("모든 동물은 살아있다");
    }
}
public interface Animal {
    default void breathe() {
        System.out.println("숨쉰다");
    }

    static void info() {
        System.out.println("모든 동물은 살아있다");
    }
}
  • default 메서드는 오버라이딩 가능, static 메서드는 클래스명으로 호출

🔍 인터페이스 vs 추상 클래스

항목인터페이스추상 클래스
상속다중 구현 가능단일 상속만 가능
구성상수 + 추상 메서드 (+default/static)변수 + 생성자 + 메서드 포함 가능
목적동작 규약 정의공통 코드 재사용 + 설계 템플릿
🔑 인터페이스는 "이런 기능이 있어야 해!"

🔧 추상 클래스는 "공통 기능도 줄게!"

💡 느낀 점 / 참고 사항

  • 인터페이스는 설계의 시작점 → 개발자 간의 계약
  • 처음엔 번거로워 보이지만, 프로젝트 커질수록 인터페이스 기반 설계의 이점이 명확해짐
  • 인터페이스와 구현체를 분리하면 테스트, 유지보수, 확장 모두 쉬워짐
  • 단일 책임 원칙(SRP), 의존 역전 원칙(DIP) 등을 지킬 수 있는 핵심 수단
공유하기
이전 글TIL - Java 기초: 객체지향의 4대 원칙다음 글 TIL - Java 기초: final 키워드와 불변 객체 설계

목차

  • 💬 배운 기술 / 지식
  • 🎛 인터페이스란?
  • 🧩 구현(implements)과 사용
  • 🧪 다형성의 핵심 도구
  • ⚙️ default & static 메서드
  • 🔍 인터페이스 vs 추상 클래스
  • 💡 느낀 점 / 참고 사항

카테고리

Docs

태그

#Java#TIL

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹