우와한 개발자

[Java] 객체지향 프로그래밍 - 인터페이스(Interface)란?

by 우와한개발자

1. 인터페이스(interface)란?

  • 인터페이스는 서로 주고받는 표준을 정의
  • 기능의 명세(계약의 정의)를 위해 사용함(기술 면접에서의 답변으로 사용. 단순히 다중상속지원하기 위해서라는 답변은 50점짜리 답변.)
  • is a 관계.
  • 점선의 닫힌 화살표 사용.
  • 다중상속 가능
  • 부모에서 throws 하지 않은 새로운 예외는 throws 할 수 없음.(즉, 부모보다 더 큰 예외를 자식에서 던질 수 없음.)
interface InterfaceName [extends SuperInterface1, SuperInterface2, ...] {
	interfaceBody;
	[public static final] data-type variableName;
	[public abstract] return-type methodName(parameter list);
}
// 대괄호 생략 가능.

 

2. 인터페이스 사용

  • 인터페이스를 사용한다 = 인터페이스를 구현한다.
  • implements 예약어 이용.
  • 여러 개의 인터페이스 구현 가능.
class className implements InterfaceName1, InterfaceName2, ... {
	classBody;
}

 

3. 인터페이스의 멤버

1) 상수와 추상메서드

  • 변수는 자동으로 public static final로 선언됨 = 상수
  • 메서드는 body가 없으며 자동으로 public abstract로 선언됨 = 추상 메서드

 

2)default 메서드

  • Java 8부터 추가
  • 인터페이스도 구현된 메서드를 가질 수 있음
  • default 메서드는 인터페이스에서 정의해놓지만, 실제 사용은 인터페이스를 구현한 클래스를 통해서 사용하게 됨.

 

3) static 메서드

  • Java 8부터 추가
  • 인터페이스의 구현된 메서드가 static으로 정의되어있다면 인터페이스 이름으로 메서드 호출가능

 

4) private 메서드

  • default 메서드 또는 static 메서드에서만 사용할 메서드를 정의해아할때 사용.
  • default 메서드에서 사용 → private
  • static 메서드에서 사용 → private static

 

4. 인터페이스 다중상속

  • 자바에서 클래스는 다중 상속이 불가능하지만 인터페이스는 구현부가 없기 때문에 다중 상속이 가능함.

 

5. 인터페이스와 추상클래스

1) 인터페이스 interface

  • 다중상속 : 클래스의 다중 상속을 지원하지 않아 여러 개의 인터페이스를 구현해 다중상속 효과 가능.
  • 행위(behavior)의 표준화 : 여러 클래스가 동일한 동작을 공유하고자 할때 일관된 행동 보장
  • 계약(constract) 정의 : 클래스가 특정 동작을 구현하도록 강제함으로써 계약 정의(기능의 명세)

 

2) 추상클래스 abstract class

  • 상속 및 확장 : 공통된 기능을 재사용할 수 있도록 함.
  • 부분적인 구현 : 일부만 구현하고 일부는 서브 클래스에서 구현하도록 할 수 있음.
  • 공통적인 필드와 메서드 : 중복 코드 감소
  • 템플릿 메서드 패턴(Template Method Pattern) : 알고리즘의 구조를 정의하고 일부 단계를 서브 클래스에게 위임함.

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기