본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/JAVA

[JAVA] 인터페이스

by soobinhand 2022. 2. 19.
728x90

인터페이스를 이해하기 전에 예를 들어보자.

이번 베이징 올림픽에서 스키점프를 하는데

A선수는 부스터가 달린 스키.

B선수는 그냥 스키.

C선수는 상당히 무거운 스키....

이런 식으로 시합을 하면 평가 자체가 불가능하지 않나싶다.

모든 선수의 스키가 개성이 넘친다. 왜 이런 문제가 발생하는지?

바로 규격, 표준이 없어서 나타나는 상황이다.

따라서 올림픽 위원회는 다시 말을 한다.

"부스터가 달리지 않은, 길이 n 무게 m인 스키만 가지고 오세요"

감이 온다.

 

팀 프로젝트를 할 때에 클래스를 모두 처음부터 구현하게 된다면 코드의 가독성도 떨어지고 시간도 오래걸린다.

다들 다른 메소드 이름, 필드 데이터 이름을 사용하기에 일관성도 떨어지고 읽기도 쉽지 않다.

아까 스키와 같은 상황이 발생한다. 누구 코드가 더 좋은지 평가를 못할뿐더러 같이 일을 해야한다면 읽는데 시간이 상당히 오래 걸릴 것이다.

이와 같은 상황을 피하기 위해 스키의 예에선 표준, 규격을 사용하고 있으며, 우린 인터페이스를 사용할 것이다.

 

정의

인터페이스는 특정 기능을 개발하는데 있어 공통적인 기능을 명시하고 강제적으로 구현하게끔 하는 역할이다.

인터페이스를 사용하게 된다면 다형성을 통해 유지보수성을 높일 수 있다.

 

선언 가능한 것들

int a;

상수 : 인터페이스에서 값을 정해준다. 제공해주는 값만 참조하라.

 

int method(int parameter);

추상 메소드 : 해당 메소드를 오버라이딩해서 재구현해라.

 

default int method(int parameter){}

디폴트 메소드 : 기본적으로 제공은 하지만, 꼭 써야하는 것은 아니다.

추가 요건으로 인해 불가피하게 반영 해야 할 때 디폴트 메소드를 쓰면 효과적임.

 

static int method(int parameter){}

정적 메소드 : 무조건 사용해야함.

 

정리

인터페이스는 추상 메소드와 상수를 통해 강력한 강제성을 가지게 하여 인터페이스를 구현한 클래스가 동일한 동작을 수행하도록 보장한다. 또 JAVA8부터 디폴트 메소드를 허용하면서 추가 요건에 대한 대처를 할 수 있도록 유연성을 확보함.

728x90

댓글