본문 바로가기
JAVA

인터페이스 정의, 구체적인 사용 예시

by meetyou 2023. 6. 8.

이번에는 인터페이스에 대해 상세하게 알아보겠습니다.

 

1. 인터페이스란?

인터페이스(Interface)는 자바에서 다중 상속을 지원하지 않는 문제를 해결하기 위해 등장한 개념 중 하나로, 클래스나 다른 인터페이스에서 구현할 메서드의 목록을 정의하는 것을 말합니다. 즉, 인터페이스는 메서드의 시그니처(메서드의 이름, 매개변수, 반환 타입)를 정의하고, 해당 메서드들을 구현하는 클래스는 반드시 인터페이스에 선언된 메서드를 모두 구현해야 합니다.

인터페이스는 다음과 같은 특징을 가집니다.

  • 인터페이스는 클래스와 마찬가지로 타입을 정의
  • 인터페이스는 다른 클래스에 구현될 메서드를 정의
  • 인터페이스는 클래스와 달리 다중 상속을 지원

인터페이스는 다음과 같은 용도로 사용됩니다.

  1. 다중 상속을 구현하기 위한 용도
  2. 서로 다른 구현체들을 사용하는 클래스의 코드를 일관성 있게 작성하기 위한 용도
  3. 유지보수가 쉬운 코드를 작성하기 위한 용도

2. 인터페이스 구체적인 사용예시 코드

1) 인터페이스 정의

저는 사람이라는 인터페이스를 만들었습니다.

인터페이스 안에는 먹는다는 메소드를 각각 만들었습니다.

interface Person {
    void eat();
}

2) 인터페이스 구현

육식주의자와 채식주의자를 통해 인터페이스를 구현합니다.

이때 다형성이라는 특징을 이용하여 동일한 메소드를 재정의 하지만

안에 내용을 달리 할 수 있습니다.

// 인터페이스 구현 
class Meatatarian implements Person {
    
    private String name;
    
    public Meatatarian(String name) {
        this.name = name;
    }
    
    @Override
    public void eat() {
        System.out.println(name+"는 고기 위주로 먹습니다.");
    }

}
// 인터페이스 구현 
class Vegetarian implements Person {
    
    private String name;
    
    public Vegetarian(String name) {
        this.name = name;
    }
    
    @Override
    public void eat() {
        System.out.println(name+"는 야채 위주로 먹습니다");
    }

}
// 클라이언트 코드 
public class Main {
    public static void main(String[] args) {
        // 다형성을 이용하여 인터페이스형 변수에 구현한 객체를 담을 수 있습니다. 
        Vegetarian vegetarian = new Vegetarian("철수");
        Meatatarian meatatarian = new Meatatarian("영희");
        vegetarian.eat();
        meatatarian.eat();
    }
}


// 출력 결과 :

// 철수는 야채 위주로 먹습니다
// 영희는 고기 위주로 먹습니다