인터페이스 : 클래스와 클래스 사이의 상호 작용의 규격
인터페이스 존재 이유 : 구체적인 구현 방법을 제공하지 않으면서도 실행되어야 할 작업을 지정할 수 있다.
interface 인터페이스이름 {
~~public static final~~ 자료형 변수명 = 값; //상수
~~public abstract~~ 반환형 추상메소드(...); //추상 메소드
}
public interface RemoteControl {
int CHANNEL = 111;
public void turnOn();
public void turnOff();
}
몸체가 없는 메소드(추상 메소드)를 가지고, 필드(변수)는 선언될 수 없다.
상수는 가능하다. 접근제한자를 쓰지 않아도 public static final로 취급한다. 따라서 만약 클래스가 인터페이스를 구현한다면, 단순히 변수명으로 상수를 참조할 수 있다.
class Television implements RemoteControl {
int curChannel = CHANNEL; //RemoteControl.CHANNEL
@Override
public void turnOn() { ... }
@Override
public void turnOff() { ... }
}
인터페이스 안에서 선언되는 메소드들은 모두 묵시적으로 public abstract
이다.
접근제한자는 항상 public, default 만 가능하다. protected 와 private은 불가능하다.
인터페이스를 구현한다는 말은 인터페이스에 정의된 메소드의 몸체를 정의한다는 의미이다.
클래스는 인터페이스를 구현하기 위해 implements 키워드를 사용하고, 해당 인터페이스에 포함된 모든 추상 메소드를 구현하여야 한다.