본문 바로가기

JAVA

인터페이스

인터페이스(interface)란?

- 일종의 추상클래스. 추상클래스(미완성 설계도)보다 추상화 정도가 높다.

- 실제 구현된 것이 전혀 없는 기본 설계도.(알맹이 없는 껍데기)

- 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다.

- 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는 데 사용된다.(프로젝트를 나눠 진행도 가능)

- 'class'대신 'interface'를 사용한다는 것 외에는 클래스 작성과 동일하다.

- 인터페이스도 참조변수 선언이 가능하고, 메소드 오버라이딩 원칙 그대로 적용된다.

- 하지만, 구성요소(멤버)는 추상메서드와 상수만 가능하다.

 

interface 인터페이스이름 {

         public static final 타입 변수이름

         public abstract 리턴타입 메소드이름(매개변수)         

}

 모든 맴버변수는 public static final 이어야 하며, 생략 가능하다.

 모든 메서드는 public abstract이며 생략 가능하다.

 

interface의 또 다른 가치

- 무엇인가를 표시하는(클래스의 특성을 표시하는) 용도로도 인터페이스는 사용된다.

- 이러한 경우, 인터페이스의 이름은 ~able로 끝나는 것이 보통이다.

- 이러한 경우, 인터페이스는 비어 있을 수도 있다.

- instanceof 연산자를 통해서 클래스의 특성을 파악할 수 있다.

- 인터페이스 UpperCasePrintable을 구현하는 클래스의 인스턴스가 print 메소드의 인자로 전달되면 문자열을 전부 대문자로 출력한다.

 

public static void print(Object obj) {

String org=obj.toString();

if(obj instanceof UpperCasePrintable) { //이런 식으로 빈 인터페이스를 사용하여 상속 받은 클래스와 아닌 클래스의 차이를 이용하여 구별이 가능하다.

org=org.toUpperCase(); }

System.out.println(org); }

 

인터페이스는 둘 이상을 동시에 구현가능하다.

- 클래스에서 인터페이스의 상속(구현)은 extends가 아닌 implements를 사용한다.

 

인터페이스간 상속도 가능하다.

- 단 이때는implements가 아닌 extends를 사용한다.

'JAVA' 카테고리의 다른 글

컬렉션 프레임워크  (0) 2019.11.11
제네릭(Generics)  (0) 2019.11.11
Object  (0) 2019.11.08
예외처리  (0) 2019.11.06
상속, 오버라이딩  (0) 2019.11.05