인터페이스는 두 객체를 연결해주는 다리 역할
상속 관계가 없는 다른 클래스들이 서로 동일한 기능 즉, 메서드를 구현해야할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장
=> 즉 인터페이스는 다양한 것들이 공통의 규칙을 따르도록 하는 도구
쉽게 말해 인터페이스는 여러 클래스들이 같은 기능(메서드)를 갖도록 "약속"을 하는 것 이 약속된 기능(메서드)은 인터페이스에 정의되어 있음
그러면 서로 다른 클래스들이 이 인터페이스를 사용하면, 그 클래스들은 모두 그 약속된 기능을 반드시 구현해야함
인터페이스의 특징
인터페이스 선언
public interface interfaceName { }
인터페이스 구성
멤버 변수는 반드시 public static final 생략 시 컴파일러 자동 추가
메서드는 public abstract or 생략
( 생략되는 제어자는 컴파일러가 자동 추가 )
인터페이스 구현
인터페이스는 추상 클래스와 동일하게 직접 인스턴스 생성 불가
=> 클래스에서 구현되어 생성
public class className implements interfaceName {
@Override
public returnType methodName(parameter ...) {
// Logic
}
}
인터페이스 추상 메서드는 구현할 때 반드시 오버라이딩
모든 추상 메서드 구현이 힘들면 추상 클래스로 변경
인터페이스 상속
인터페이스간의 상속은 implements 가 아닌 extends 키워드를 사용
implements는 클래스와 인터페이스 간의 상속