티스토리 뷰

★ 인터페이스(interface)

- 인터페이스 (interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다.

  인터페이스는 추상 메서드와 상수로만 이루어져 있다. 

  구현된 코드가 없기 때문에 당연히 인터페이스로 인스턴스롤 생성할 수도 없다.

  이 인터페이스 사용 방법을 알아보겠다. 

 


 

1. Calc 인터페이스 만들기

계산기를 만들기 위한 코드를 선언했다.

 

원주율을 뜻하는 PI 변수와 오류가 났을 때 사용할 ERROR 변수를 선언했다.

사칙 연산을 수행하기 위해 add ( ), substract ( ) 메서드를 선언했다. 

 

인터페이스에서 선언한 변수는 모두 컴파일 과정에서 값이 변하지 않는 상수로 자동 변환이 된다.

public static final 예약어를 쓰지 않아도 무조건 상수로 인식한다.

하지만, 여기서 명시적으로 보여주기 위해 public static final 예약어를 썼다.

 

2. 클래스에서 인터페이스 구현하기.

 

Calc 인터페이스를 구현할 구현 클래스 'CompleteCalc'를 만들었다

1. 선언한 인터페이스를 클래스가 사용하는 것을 '클래스에서 인터페이스를 implemets (구현)한다.' 라고 표현한다. 

   

   상위 클래스에 구현한 기능을 학위 클래스에서 확장한다는 의미로 extends 예약어를 사용하였다.

   인터페이스에서는 인터페이스에 선언한 기능을 클래스가 구현한다는 의미로 implements  예약어를 사용한다. 

 

2. implements 예약어를 사용한 후,

   The type CompleteCalc must implement the inherited abstract method Calc.add(int, int) 오류 메시지가 나타난다.

  추상 메서드를 사용하는 옵션을 선택해 오버라이드를 해준다. 

  Calc 인터페이스의 add( ) 추상 메서드와 substract ( ) 추상 메서드를 구현한다.

 

4. 추상 메서드 add( ) 에 int 타입의 C를 추가해 준 creativeCalc 클래스를 만들었다.

 

3. 결과를 출력하기 위해 App 클래스를 생성하였다.

CreativeCalc 인스턴스를 생성하면

13이 출력되고,

 

CompleteCalc 인스턴스를 생성하면,

8이 출력되는 것을 볼 수 있다.

 

이처럼, 

자동차 타이어를 갈아 넣어 끼우듯이 필요한 클래스의 인스턴스를 생성할 수 있다.

그리고 해당 인터페이스가 구현해 놓은 메서드를 강제로 사용해야한다.