인터페이스

sungs·2025년 6월 7일

자바

목록 보기
9/95

🧩 인터페이스

인터페이스(Interface)는 일종의 설계도.
어떤 클래스가 꼭 가져야 할 기능의 틀만 정의하고, 실제 동작은 구현하지 않는다.

public interface Animal {
    void sound();  // 메서드 시그니처만 정의
}
  • 위 코드에서 sound() 메서드는 구현이 없는 껍데기.

  • 이 인터페이스를 구현한 클래스는 반드시 sound() 메서드를 정의해야 한다.

예시

// 인터페이스 정의
public interface Animal {
    void sound();
}

// 인터페이스 구현
public class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("멍멍!");
    }
}

public class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("야옹~");
    }
}

// 사용
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        Animal cat = new Cat();

        dog.sound(); // 출력: 멍멍!
        cat.sound(); // 출력: 야옹~
    }
}
  • Dog와 Cat 클래스는 Animal 인터페이스를 implements해서 구현했다.

  • Animal 타입으로 객체를 다룰 수 있어 다형성(Polymorphism)을 활용할 수 있다.

📚 인터페이스의 특징

특징설명
메서드는 기본적으로 추상 메서드public abstract가 생략되어 있음
다중 구현 가능클래스는 여러 인터페이스를 implements할 수 있음
필드는 public static final 상수만 허용인터페이스 안의 변수는 상수로만 존재
자바 8 이후에는 defaultstatic 메서드도 허용됨일부 구현을 제공할 수 있음
public interface MyInterface {
    void method(); // 추상 메서드

    default void defaultMethod() {
        System.out.println("디폴트 메서드입니다.");
    }

    static void staticMethod() {
        System.out.println("정적 메서드입니다.");
    }
}

🎯 언제 인터페이스를 써야 할까?

  1. 기능만 정의하고 구현은 나중에 맡기고 싶을 때

  2. 여러 클래스에서 같은 행동을 강제하고 싶을 때

  3. 유지보수나 확장성을 고려한 설계가 필요할 때

  4. 다형성을 활용해 코드를 유연하게 만들고 싶을 때

🧠 인터페이스 vs 추상 클래스 차이점

항목인터페이스추상 클래스
키워드interfaceabstract class
다중 상속가능불가능
변수public static final 상수만 가능일반 변수도 사용 가능
메서드 구현불가 (default/static만 가능)일부 구현 가능
목적동작의 약속(규칙)공통 기능의 재사용

🏁 정리

  • 인터페이스는 기능의 틀을 제공하는 설계도이다.

  • 클래스를 설계할 때 인터페이스를 활용하면 유지보수, 확장성, 다형성에서 큰 이점을 얻을 수 있다.

  • 자바의 인터페이스는 객체지향 설계의 핵심 도구다.

profile
앱 개발 공부 중

0개의 댓글