[Java] 인터페이스

서연·2025년 4월 24일

Java

목록 보기
18/36

인터페이스

  • 클래스가 따라야할 최소한의 공통 규칙을 정의하는 역할을 한다.

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

  • 개발자마다 서로 다른 방식으로 메서드를 만든다면 일관성이 깨질 수 있다.
    -> 인터페이스를 사용하면 일관성을 유지하면서 클래스가 고유한 특색을 확장할 수 있도록 도와준다.

인터페이스 적용

  • 클래스에서 implements 키워드로 인터페이스를 활용할 수 있다.
  • 인터페이스로 구현한 클래스를 구현체라고 한다.

인터페이스 다중구현(multi-implementation)

  • implements 키워드로 다수의 인터페이스를 구현할 수 있다.
  • 한 개의 클래스가 여러 인터페이스를 구현한 경우 다중구현이라고 한다.
// 🚀 "동물의 기본 기능" 인터페이스
interface Animal {
    void eat();
}

// ✈ "나는 기능" 인터페이스
interface Flyable {
    void fly();
}

// ✅ 다중 구현 
class Bird implements Animal, Flyable {
    public void eat() {
        System.out.println("새가 먹이를 먹습니다.");
    }

    public void fly() {
        System.out.println("새가 하늘을 납니다.");
    }

    // 추가적으로 land() 메서드도 가능하지만 필수는 아님
    public void land() {
        System.out.println("새가 착륙합니다.");
    }
}
// 실행 코드
public class Main {
    public static void main(String[] args) {
        Bird bird = new Bird();
        bird.eat();  // "새가 먹이를 먹습니다."
        bird.fly();  // "새가 하늘을 납니다."
        bird.land(); // "새가 착륙합니다."
    }
}

인터페이스 다중상속(multi-ingeritance)

  • extends 키워드로 상속을 구현할 수 있다.
// 1. 기본 인터페이스: 동물의 기본 기능
interface Animal {
    void eat();
}

// 2. 추가 인터페이스: 나는 기능
interface Flyable {
    void fly();
}

// 3. ✅ 다중 상속새로운 인터페이스: 동물 + 나는 기능
interface FlyableAnimal extends Animal, Flyable {
    void land();  // 추가 기능
}

// 4. 새 클래스 (FlyableAnimal을 구현)
class Bird implements FlyableAnimal {

    public void eat() {
        System.out.println("새가 먹이를 먹습니다.");
    }

    public void fly() {
        System.out.println("새가 하늘을 납니다.");
    }

    public void land() {
        System.out.println("새가 착륙합니다.");
    }
}
// 5. 실행 코드
public class Main {
    public static void main(String[] args) {
        Bird bird = new Bird();
        bird.eat();  // "새가 먹이를 먹습니다."
        bird.fly();  // "새가 하늘을 납니다."
        bird.land(); // "새가 착륙합니다."
    }
}

인터페이스에 변수를 선언하는 경우

  • 변수 선언시 형식에 관계 없이 자동으로 상수로 선언된다.
  • public static final로 선언된다.
  • 인터페이스는 표준의 역할이므로 변수선언은 최소화하는 것이 좋다.
public interface Config {
    int POPULATION = 100; // public static final 로 선언됩니다.
}

0개의 댓글