제품을 나누어 개발한 후 하나로 합칠 때 미리 규격을 정하지 않으면 나중에 문제가 발생할 수 있다. 이때 필요한 것이 인터페이스로 사전에 정한 약속이나 규격을 의미한다.
예를 들어, 객체의 크기를 비교하는 Comparable 인터페이스는 다음과 같다.
interface 인터페이스이름 {
// 상수 필드 -> 상수만 가능하기 때문에 public static final
// abstract 메서드 -> 인터페이스의 모든 메서드 (아래 3가지 종류를 제외)가
public abstract이기 때문에 public abstract 키워드 생략 가능
// default 메서드 -> JDK 8부터 가능
// static 메서드 -> JDK 8부터 가능
// private 메서드 -> JDK 9부터 가능
}
// 상속할 인터페이스가 여러 개라면 쉼표(,)로 연결한다.
interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 {
}
class 자식클래스 implements 부모인터페이스1, 부모 인터페이스2 {
}
// 인터페이스는 다중 상속할 수 있다.
clss 자식클래스 extends 부모클래스 implements 부모인터페이스1, 부모인터페이스2 {
}
// 클래스는 다중 상속할 수 없다.
class 자식클래스 extends 부모클래스1, 부모클래스2 {
}XXXXXXXXXXXXXXXXXXXXXXXXX 안됨.
package sec03;
public interface Coin {
int PENNY = 1, NICKEL = 5, DIME = 10, QUARTER = 25;
}
package sec03;
public class Coin1Demo implements Coin {
public static void main(String[] args) {
// Dime은 10센트입니다.
System.out.println("Dime은 " + DIME + "센트입니다.");
}
}