1. 인터페이스의 개요

인터페이스 : 클래스와 클래스 사이의 상호 작용의 규격

인터페이스 존재 이유 : 구체적인 구현 방법을 제공하지 않으면서도 실행되어야 할 작업을 지정할 수 있다.

인터페이스

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 키워드를 사용하고, 해당 인터페이스에 포함된 모든 추상 메소드를 구현하여야 한다.