인터페이스(Interface)란?
인터페이스는 클래스 간의 계약(Contract)을 정의하고, 다형성을 활용하여 유연한 코드를 작성하는데 중요한 역할을 한다. 인터페이스를 사용하여 다양한 클래스가 공통된 동작을 제공하면서도 각자의 특정 동작을 구현할 수 있다.
인터페이스는 하나 이상의 추상 메소드(메소드 시그니처만 정의하고 구현 내용은 없는 메소드)를 정의할 수 있다. 이러한 메소드는 클래스에서 반드시 구현되어야 한다.
public interface MyInterface {
void myMethod(); // 추상 메소드
}
인터페이스는 상수 필드(변하지 않는 값)를 정의할 수 있다. 이러한 필드는 자동으로 public, static, final로 선언된다.
public interface MyInterface {
int MY_CONSTANT = 42; // 상수 필드
}
클래스는 하나의 상위 클래스만 상속할 수 있지만, 인터페이스는 다중 상속을 지원한다. 클래스는 여러 개의 인터페이스를 구현할 수 있다.
public class MyClass implements MyInterface1, MyInterface2 {
// 클래스 내용
}
클래스가 인터페이스를 구현할 때, 해당 인터페이스의 모든 추상 메소드를 반드시 구현해야한다. 이로써 클래스가 특정 동작을 보장하도록 한다.
인터페이스를 사용하여 객체를 다형적으로 다룰 수 있다. 인터페이스를 구현하는 클래스의 객체는 해당 인터페이스의 참조 변수에 할당될 수 있다.
MyInterface myObj = new MyClass();
인터페이스를 사용하면 클래스 간의 결합도를 낮추어 유연하고 모듈화된 코드를 작성할 수 있다. 이는 코드 변경 및 유지 보수를 용이하게 만든다.