인터페이스란 implements 키워드를 사용하여 인터페이스의 모든 추상메소드를 구현한 클래스를 작성하는 것을 말한다.
인터페이스는 객체의 사용법을 정의한 타입이다.
객체의 교환성을 높여주어 다형성을 구현하는 역할을 한다.
- 상수
인스턴스 또는 정적 필드 선언 불가능
public static final 선언(생략가능)- 추상메소드
- default메소드
public접근지정자만 허용, 생략 가능
인터페이스에 코드가 작성된 메소드
인터페이스를 구현하는 클래스에 자동 상속- private메소드
인터페이스 내에 메소드 코드가 작성되어야 함- static메소드
- 인터페이스는 필드(멤버변수) 선언 불가
- 클래스는 인터페이스를 상속받을 수 없다.
- 인터페이스끼리만 상속 가능
- 인터페이스를 상속받는 클래스는 인터페이스의 모든 추상메소드 반드시 구현
- 인터페이스의 다중 상속 가능
- 구현클래스는 선언부에서 implements 키워드를 추가한다.
- 인터페이스의 모든 메소드는 기본적으로 public 접근제한을 갖기 때문에
public보다 낮은 접근지정자는 선언 불가능하다.- 인터페이스의 추상메소드에 대응하는 실체 메소드를 구현클래스에서 작성하지 않으면
구현클래스는 자동적으로 추상클래스가 된다.public class 클래스명 implements 인터페이스명 { }
일회성의 구현 객체를 만들기 위해 클래스 소스 파일을 만드는것은 비효율적이다.
이때, 자바에서는 소스파일 없이 구현객체를 만드는 방식이 있는데 이것을 익명 구현 객체라고 한다.
인터페이스 변수 = new 인터페이스( ) { }; // < ; > 이 반드시 붙어야 한다
RemoteControl rc = new RemoteControl() { public void turnOn() { System.out.println("turnOn"); } public void turnOff() { System.out.println("turnOff"); } public void setVolume(int volume) { System.out.println("setVolume"); } };
한 구현 클래스에 다중의 인터페이스를 구현 가능하다.
< , > 로 다중의 인터페이스를 구분한다.public class 구현클래스명 implements 인터페이스1, 인터페이스2 { }