본문 바로가기

Language/Java

Java api 일기 4 인터페이스란?

 이전에 배웠듯, 객체는 메소드를 통해 외부 세계와의 상호작용을 정의한다.
메소드는 외부 세계와 객체의 인터페이스 형성한다.
예를 들어, 사용자와 TV에 붙어 있는 몇 개의 버튼들은 사용자와 플라스틱 케이스(TV 본체)의 안쪽에 있는 전기 배선(실제 TV를 기능하게 하는) 사이의 인터페이스이다.

더 자세히 말하자면,
TV 안쪽의 전기배선 = 인터페이스
TV의 버튼(들) = 구현되어진 클래스(들)
우리가 TV를 켜고 끌 때 "전원" 버튼을 누르는 것 = 구현되어진 클래스를 사용 -> 인터페이스가 작동

가장 일반적인 형식에서 인터페이스는 본문(body)이 비어있는 관련 메소드 그룹이다.
인터페이스로 지정된 경우 자전거의

행동

(메소드)는 다음과 같이 나타날 수 있다.

interface Bicycle {  // 분당 바퀴 회전
  void changeGear(int newValue); // 비어있는 메소드.
  void speedUp(int increment);
  void applyBrakes(int decrement);
}

위의 인터페이스를 구현하려면 클래스 이름이 특정 브랜드(예: ACMEBicycle )로 변경되고 클래스 선언에서 구현 키워드를 사용한다.

class ACMEBicycle implements Bicycle {   // 해당 class에서 구현 할 인터페이스(Bicycle) 선언.
  int cadence = 0; int speed = 0; int gear = 1;

// 컴파일러에 이제 해당 메서드가 필요.
// 인터페이스 상의 모든 메소드가 구현되어야 하며, 그렇지 않으면, 컴파일은 실패.

  void changeCadence(int newValue) {
  cadence = newValue;
  }
  void changeGear(int newValue) {
  gear = newValue;
  }
  void speedUp(int increment) {
  speed = speed + increment;
  }
  void applyBrakes(int decrement) {
  speed = speed - decrement;
  }
  void printStates() {
  System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
  }
}

인터페이스를 구현하면 클래스가 제공하기로 약속하는 행동에 대해 더 공식적(formal)이 될 수 있다.
인터페이스는 클래스와 외부 세계 사이에 계약을 형성하며, 이 계약은 컴파일러에 의해 빌드 시점에 시행된다.
어떤 클래스가 인터페이스를 구현하는 경우 해당 인터페이스에 정의된 모든 메서드가 소스 코드에 표시(구현)되어야 클래스가 성공적으로 컴파일된다.

 

출처 : docs.oracle.com/javase/tutorial/java/concepts/interface.html

'Language > Java' 카테고리의 다른 글

Java api 일기 6 연산자 요약  (0) 2021.01.18
Java api 일기 5 패키지란?  (0) 2021.01.18
Java api 일기 3 상속이란?  (0) 2021.01.17
Java api 일기 2 클래스란?  (0) 2021.01.17
Java api 일기 1 객체란?  (0) 2021.01.17