인터페이스는 클래스들이 그 기능을 서로 다르게 구현할 수 있도록 하는 클래스 규격선언이다.
클래스가 구현해야 할 메소드들이 선언되는 추상형이다.
선언할 때는 [ interface ] 키워드를 사용한다.
public interface Person{ }
java 7까지
인터페이스를 상수와 추상메소드로만 구성
java 8
상수와 추상메소드를 포함한 채로 default 메소드 포함
java 9
private, static 메소드 포함
하지만 여전히 필드(멤버변수)를 선언할 수 없다.
interface에서 알아서 붙여주기 때문에 생략가능하다. 그래서 앞에 타입만 있어도된다. 하지만 default 메소드에서 default는 꼭 써야한다.
( 위 두 가지는 많이 쓰니 기억하도록 하자 )
인터페이스의 객체는 생성할 수 없다.
인터페이스 타입의 레퍼런스 변수를 선언할 수 있다.
PhoneInterface IPhone;
인터페이스를 상속받는 클래스는 인터페이스의 모든 추상메소드를 반드시 구현해야 한다.
반대로 인터페이스에서 클래스를 상속받는 경우를 오류가 발생한다.
다른 인터페이스 상속이 가능하며 다중 상속 또한 가능하다.
인터페이스간 상속이 가능할 뿐 클래스와 다중 상속은 불가능하다.
인터페이스를 상속받은 클래스를 구현해 볼 것이다.
클래스에서 인터페이스를 상속받을 때 [ implements ]를 사용한다.
( 인터페이스간의 상속 시에는 클래스와 같이 extends를 사용한다. )
PhoneInterface의 모든 메소드들을 구현하지 않으면 오류가 발생한다.
클래스들의 다형성을 실현하기 위한 도구이다.
예제 1-9
인터페이스를 구현하고 동시에 클래스를 상속받는 경우
PhoneInterface, MP3Interface, MobilePhoneInterface 인터페이스
PDA 클래스
Iphone 클래스
InterfaceEx 클래스