[Java] 인터페이스 (Interface)

지니·2025년 3월 2일

JAVA

목록 보기
4/9
post-thumbnail

1. 인터페이스란?


추상 메소드상수 필드만 가질 수 있는 클래스의 변형체이다. 구현은 지정한 클래스에서 진행하고, 인터페이스를 다른 클래스에서 구현할 때는 implements 키워드를 사용한다.

// Clothes.java (인터페이스)
interface Clothes{
	// public static final은 생략이 가능하다.
	public static final int MAX_PRICE = 1000000;
    int MIN_PRICE = 10;
 
 	// public abstract 생략이 가능하다.
    public abstract void getName();
    void getPrice();
}

// Top.java (클래스)
class Top implemenths Clothes{
}

⚠️ 여기서 잠깐
각각의 버전별로 밑에 있는 메소드들이 작성 가능해졌다.

  • java 8 이상
    • static 메소드
    • default 키워드를 사용한 non static 메소드 (오버라이딩 안해도 됨)
  • java 9 이상
    • private 메소드

2. 인터페이스를 사용하는 이유


2-1. 기능에 강제성 부여

  • 기능에 강제성을 부여한다.
  • 인터페이스는 "이 기능을 제공할거야!"를 알려주는 일종의 규약이다.

(1) Product 인터페이스

interface Product {
    public abstract double getPrice();
    String getName(); // 묵시적
}

(2) Product를 구현하는 Electronics 클래스

✅ 여기에서 getName()getPrice()는 강제로 구현되어야 한다.

class Electronics implements Product {
    private String name;
    private double price;

    public Electronics(String name, double price) {
        this.name = name;
        this.price = price;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public double getPrice() {
        return price;
    }
}

2-2. 단일 상속 단점 극복

// 클래스는 1개의 클래스를 상속하고, 여러개의 인터페이스를 구현할 수 있다. 
class Duck extends Animal implements Flyable, Swimmable {
}

// 인터페이스는 인터페이스만 상속이 가능하다. (다중 상속도 가능)
interface Blouse extends Clothes, Top {
}

3. 추상 메소드 vs 인터페이스


3-1. 공통점

  • 자체 인스턴스 생성이 불가능하다.
  • 다형성 적용 시 상위 타입 활용이 가능하다.

3-2. 차이점

추상 클래스인터페이스
상속 가능 범위단일 상속다중 상속
키워드extendsimplements
추상 메소드 개수abstract 메소드 0개 이상모든 메소드는 abstract (버전에 따라 차이가 생김)
abstract 키워드명시묵시

0개의 댓글