"안녕하세요, 아미고! 저예요. 인터페이스에 대한 또 다른 관점을 제시하고 싶습니다. 대부분의 경우 클래스는 특정 객체의 모델입니다. 대조적으로 인터페이스는 객체의 능력 또는 객체와 비슷합니다. 개체 자체가 아니라 역할입니다."

예를 들어 자동차, 자전거, 오토바이, 바퀴와 같은 사물은 클래스와 개체로 가장 잘 표현됩니다. 그러나 «I can move», «I can carry people», «I can park»과 같은 능력은 인터페이스로 더 잘 표현됩니다. 이 예를 확인하십시오.

자바 코드 설명
interface Moveable
{
void move(String newAddress);
}
이동 능력에 해당합니다.
interface Driveable
{
void drive(Driver driver);
}
이동 능력에 해당합니다.
interface Transport
{
void addStuff(Object stuff);
Object removeStuff();
}
화물을 운반하는 능력에 해당합니다.
class Wheel implements Moveable
{
...
}
«휠» 클래스. 움직일 수 있는 능력이 있습니다.
class Car implements Moveable, Drivable, Transport
{
...
}
«자동차» 클래스. 움직이고, 사람이 운전하고, 화물을 운반하는 능력을 가지고 있습니다.
class Skateboard implements Moveable, Driveable
{
...
}
«스케이트보드» 수업. 움직일 수 있고 사람이 조종할 수 있는 능력이 있습니다.

인터페이스는 프로그래머의 삶을 크게 단순화합니다. 프로그램에는 종종 수천 개의 개체, 수백 개의 클래스 및 수십 개의 인터페이스(역할)가 있습니다. 역할은 거의 없지만 여러 가지 방법(클래스)으로 결합할 수 있습니다.

요점은 다른 모든 클래스와의 상호 작용을 정의하는 코드를 작성할 필요가 없다는 것입니다. 역할(인터페이스)과 상호 작용하기만 하면 됩니다.

당신이 로봇 빌더라고 상상해보십시오. 수십 개의 하위 로봇이 있으며 각각 여러 기술을 가질 수 있습니다. 급히 벽 건설을 완료해야 한다고 가정합니다. "빌드" 능력이 있는 모든 로봇을 선택하고 벽을 만들라고 지시하면 됩니다. 당신은 어떤 로봇이 그것을 하는지 정말로 신경쓰지 않습니다. 로봇식 물뿌리개가 되게 해주세요. 구축 방법을 알고 있다면 구축하도록 하십시오.

코드에서는 다음과 같이 표시됩니다.

자바 코드 설명
static interface WallBuilder
{
void buildWall();
}
«벽을 쌓는» 능력. «벽을 쌓다» 명령을 이해합니다(적절한 방법이 있음).
static class WorkerRobot implements WallBuilder
{
void buildWall()
 {
…
 }
}
static class GuardRobot implements WallBuilder
{
void buildWall()
 {
…
 }
}
static class WateringCan
{
…
}
이 능력/기술을 가진 로봇.

물 뿌리개는 벽을 만들 수 없습니다(WallBuilder 인터페이스를 구현하지 않음).

public static void main(String[] args)
{
 //add all robots to a list
 ArrayList robots = new ArrayList();
 robots.add(new WorkerRobot());
 robots.add(new GuardRobot());
 robots.add(new WateringCan());

 //build a wall if you can
 for (Object robot: robots)
 {
  if (robot instanceof WallBuilder)
  {
   WallBuilder builder = (WallBuilder) robot;
   builder.buildWall();
   }
  }
 }
}
벽을 세우라는 명령을 어떻게 내립니까?

"놀라울 정도로 흥미롭군요. 인터페이스가 이렇게 흥미로운 주제가 될 줄은 꿈에도 몰랐습니다."

"그리고 일부! 다형성과 함께, 그것은 완전히 놀라운 것입니다."