인터페이스 추상 클래스의 한 종류로 모든 필드는 public static final 속성을 포함합니다.
interface Exam1 {
public int NUM1 = 10;
// Illegal modifier for the interface field Exam1.
// NUM1; only public, static & final are permitted
// -> 세가지 속성 이외의 속성을 걸었을때 에러 메시지
}
인터페이스 역시 추상화 클래스이므로 상속이 가능합니다.그러나 일반적으로 상속에 'extends'가 사용되는것에 반해 인터페이스에서는 'implements'가 사용됩니다.
interface Exam2 {
public void inherit();
}
class Exam2_1 implements Exam2 {
@Override
public void inherit() {
System.out.println("Exam2로 부터 상속받음");
}
}
<※ 결과는 다음과 같습니다.>
class PC {
// PC는 USB타입의 장치를 연결할 수 있다
void connect(USB device) {
device.onConnect(); // 연결된 장치마다, 연결되었을 때 수행하는 동작이 있다
}
}
interface USB {
/*public abstract*/void onConnect();
// 함수형 인터페이스를 만들기 위해서는 메서드가 하나만 있어야 함
}
class DataCable implements USB {
@Override
public void onConnect() {
System.out.println("데이터를 전송할 준비가 되었습니다");
}
}
class Keyboard implements USB {
@Override
public void onConnect() {
System.out.println("키보드가 연결되었습니다");
}
}
class Mouse implements USB {
@Override
public void onConnect() {
System.out.println("마우스가 연결되었습니다.");
}
}