UBS 인터페이스, SATA 인터페이스 등으로 많이 사용하는 용어이다. 이때 인터페이스는 서로 다른 하드웨어 장치들이 데이터를 주고받을 수 있는 규격이다. 이러한 규격을 정해놓으면 장치들을 규격화하여 누가 만들건 문제없이 결합할 수 있게 된다. 소프트웨어에도 이 개념을 적용할 수 있다. 소프트웨어를 규격화된 모듈로 만들고, 서로 인터페이스가 맞는 모듈을 조립하듯이 프로그램을 작성할 수 있다.
interface PhoneInterface{
public static final int BUTTONS = 20;
abstract public void sendCall(); // 인터페이스의 멤버는 누구나 접근 가능하도록 모두 public이다.
}
interface Music extends Mobile, MP3{
void playMP3RingTone(); // 새로운 추상 메소드 추가
}
class SamsungPhone implements MobliePhoneInterface, AIInterface{ // 다중 인터페이스 구현
// MobliePhoneInterface의 모든 메소드를 구현한다.
// 추상 메소드를 하나라도 빠트리면 컴파일 오류 발생!
public void sendCall(){...}
public void receiveCall(){...}
// 추가적으로 다른 메소드를 작성할 수도 있다.
public int getButtons(){...}