SeouliteLab

[Java/자바] Interface: 인터페이스란? 본문

프로그래밍

[Java/자바] Interface: 인터페이스란?

Seoulite Lab 2024. 3. 14. 14:15

Java에서 인터페이스(interface)는 클래스와 비슷하게 동작하지만, 메서드의 몸체(body)를 포함하지 않는 일종의 추상 클래스입니다. 인터페이스는 객체 간의 통신을 위한 규약(Contract)을 정의하며, 다중 상속을 지원하기 위한 도구로 사용됩니다. 이번 포스트에서는 Java 인터페이스에 대해 자세히 알아보고, 다양한 예제를 통해 이해해보겠습니다.

1. 인터페이스의 정의

인터페이스는 interface 키워드를 사용하여 정의됩니다. 메서드 선언은 메서드 이름과 매개변수 목록만을 포함하고, 메서드의 몸체는 포함하지 않습니다. 인터페이스는 다음과 같이 정의됩니다:

public interface MyInterface {
    void myMethod();
}

위의 예제에서 MyInterface 인터페이스는 myMethod라는 메서드를 정의합니다. 이 메서드는 어떤 구현체에서도 반드시 구현되어야 합니다.

2. 인터페이스의 구현

인터페이스를 구현하는 클래스는 implements 키워드를 사용하여 구현합니다. 구현 클래스는 인터페이스에서 정의한 모든 메서드를 구현해야 합니다. 예를 들어:

public class MyClass implements MyInterface {
    public void myMethod() {
        // 메서드 구현
    }
}

위의 예제에서 MyClass 클래스는 MyInterface 인터페이스를 구현하고, myMethod를 구현합니다.

3. 인터페이스의 다중 상속

Java에서는 클래스는 다중 상속을 지원하지 않지만, 인터페이스는 다중 상속을 지원합니다. 클래스가 여러 개의 인터페이스를 구현할 수 있습니다. 예를 들어:

public interface Interface1 {
    void method1();
}

public interface Interface2 {
    void method2();
}

public class MyClass implements Interface1, Interface2 {
    public void method1() {
        // method1의 구현
    }

    public void method2() {
        // method2의 구현
    }
}

위의 예제에서 MyClass 클래스는 Interface1Interface2 인터페이스를 모두 구현하고 있습니다.

4. 인터페이스의 활용

인터페이스는 다형성(polymorphism)을 구현하는 데 주로 사용됩니다. 즉, 여러 클래스가 동일한 인터페이스를 구현하면 클라이언트는 해당 인터페이스의 메서드를 호출하며, 런타임에 어떤 구현체가 호출될지 결정됩니다.

public interface Animal {
    void sound();
}

public class Dog implements Animal {
    public void sound() {
        System.out.println("멍멍");
    }
}

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

위의 예제에서 Dog 클래스와 Cat 클래스는 모두 Animal 인터페이스를 구현하고 있습니다. 따라서 다음과 같이 다형성을 활용할 수 있습니다:

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

        dog.sound();  // 출력 결과: 멍멍
        cat.sound();  // 출력 결과: 야옹
    }
}