인터페이스는 객체 지향 프로그래밍의 특징을 활용할 수 있도록 기능을 제공한다.
인터페이스는 추상 메서드를 지니고 있으며 메서드의 구현은 인터페이스를 사용하는 구현체에서 구현하도록 하기 때문에 아래 코드의 예시처럼 다른 클래스에서 같은 이름의 메서드를 사용할 수 있다.
interface control {
void on();
void off();
}
class TV implements control{
@Override
void on() {
System.out.println("TV 동작"):
}
@Override
void off() {
System.out.println("TV 종료"):
}
}
class Computer implements control{
@Override
void on() {
System.out.println("컴퓨터 동작"):
}
@Override
void off() {
System.out.println("컴퓨터 종료"):
}
}
인터페이스는 추상 메서드를 통해 설계도만 정의하고 구현은 인터페이스를 사용하는 구현체에 맡겨 확장의 편의성과 유연성을 제공한다.
인터페이스는 외부에 노출할 메서드들을 공용 인터페이스로 사용해 클라이언트에서 접근 가능한 메서드를 분류할 수 있다.
인터페이스도 extends를 통해 인터페이스를 상속받을 수 있다.