개발/Java

Java에서의 인터페이스 (Interface)

ju_ni_ 2023. 7. 18. 16:56
반응형

인터페이스는 클래스와 다르게 '무엇을 할 것인지' 보다 '어떻게 할 것인지'를 중점적으로 정의하는 방법 중 하나입니다. 다시 말해, 인터페이스는 클래스의 행동 방식을 정의하는 규격서 또는 설계도와 같은 것입니다.

 

 

인터페이스의 선언

 

자바에서 인터페이스는 interface 키워드를 사용하여 선언하며, 구조는 아래와 같습니다.

 

interface InterfaceName{
    public static final type CONSTANT_NAME = value;
    public abstract returnType methodName(parameters);
}

 

이때 인터페이스 내에서 선언하는 모든 변수는 자동으로 public, static, final이며, 모든 메소드는 public, abstract입니다. 이 특성들은 인터페이스의 필수적인 특성이므로 별도로 작성하지 않아도 됩니다.

 

 

인터페이스의 구현

 

인터페이스를 사용하려면 먼저 구현해야 합니다. 클래스에 implements 키워드를 사용하여 인터페이스를 구현할 수 있습니다.

 

class ClassName implements InterfaceName{
    // 모든 인터페이스 메소드 구현
}

 

implements 키워드를 사용하면 해당 클래스는 인터페이스에 정의된 모든 메소드를 반드시 구현해야 합니다. 이 클래스는 이제 인터페이스 타입으로 취급되어 인터페이스의 역할을 할 수 있게 됩니다.

 

 

인터페이스의 중요성

 

인터페이스는 어떤 클래스가 어떤 동작을 수행해야 하는지에 대한 규칙을 제공합니다. 이렇게 하면 프로그래머는 인터페이스를 구현하는 클래스의 내부 작동 방식에 대해 걱정하지 않고, 인터페이스가 제공하는 메소드를 사용할 수 있습니다. 이는 특히 여러 사람이 함께 작업하거나, 다른 팀이나 회사가 제공하는 라이브러리를 사용할 때 매우 유용합니다.

 

또한 인터페이스는 다중 상속의 한 형태를 제공합니다. 한 클래스는 여러 인터페이스를 구현할 수 있으므로, 여러 가지 방식으로 동작하는 클래스를 만들 수 있습니다.

 

 

인터페이스의 예시 코드

 

아래의 예제는 인터페이스와 그 인터페이스를 구현하는 클래스의 간단한 예입니다.

 

// 인터페이스 선언
interface Animal {
    void eat();
    void sound();
}

// 인터페이스 구현
class Cat implements Animal {
    public void eat() {
        System.out.println("Cat eats");
    }

    public void sound() {
        System.out.println("Cat meows");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.eat();
        cat.sound();
    }
}

 

출력 결과

 

Cat eats
Cat meows

 

위 코드에서 Animal이라는 인터페이스를 선언하였고, Cat이라는 클래스에서 이 인터페이스를 구현하였습니다. 따라서 Cat 클래스는 eatsound라는 메소드를 반드시 구현해야 합니다. Main 클래스에서는 Cat 객체를 생성하고, 이 객체를 통해 인터페이스의 메소드를 호출합니다. 이를 통해 인터페이스가 어떻게 작동하는지 확인할 수 있습니다.

 

 

인터페이스는 프로그램을 설계하고 구현하는 데 중요한 도구입니다. 코드를 재사용하고 유지보수하기 가능하게 만들며, 다른 개발자와의 협업을 용이하게 해줍니다. 클래스가 어떤 동작을 해야하는지에 대한 규칙을 명확하게 정의해주기 때문에, 일관된 방식으로 코드를 작성할 수 있게 합니다. 이로써 소프트웨어 개발의 효율성과 안정성을 높일 수 있습니다.

반응형