[public] interface 인터페이스명 {
자료형 필드명 = 값; // public static final 생략 가능
፧
반환형 메소드명 (자료형 매개변수, ...); // public abstract 생략 가능
፧
}
public class 클래스명 implements 인터페이스명, 인터페이스명, ...{}
public interface 인터페이스명 extends 인터페이스명, 인터페이스명, ...{}
클래스의 단일 상속 관련 문제를 일부 보완하기 위해
ex1) public class 늑대인간 extends 인간, 늑대 (X)
ex2) public class 늑대인간 extends 인간 implements 늑대 (O)
ex3) public class 흡혈늑대인간 extends 인간 implements 늑대, 흡혈귀 (O)
클래스에 대한 작업지시서의 역할을 제공하기 위해
=> 인터페이스를 상속받은 모든 자식클래스에 동일한 형태의 메소드가 선언되도록 규칙 제공
ex) TV or radio or smartphone >> 볼륨 증가, 볼륨 감소 등을 인터페이스로 만듦
=> 클래스간의 결합도를 낮추어 시스템 변경에 따른 유지보수의 효율성을 증가
** jdk-11 이상에서 선언 가능
default 반환명 메소드명 (자료형 매개변수, ...) {
명령;
명령;
፧
}