자바의 인터페이스

몇일전 회사 대리님의 한 말씀…..
” 난 아직도 인터페이스를 왜 사용하는지 모르겠다 ” 라고 하셨다..
나 조차 자바개발자로서 인터페이스의 기능과 문법은 알고있지만 지금까지도 왜?왜?왜? 사용해야하는지 자세히 알지는 못하였다.
오히려 불필요하다고만 생각해왔을뿐..
하지만 인터페이스는 오픈소스인 스프링, 스트럿츠에 많이 사용되어져 있고 다른 프로젝트의 소스코드를 보아도 조금씩은 들어가 있기에 이번 기회에 완벽히 습득을 하고자 공부를 해봤다.

 

1. 먼저 interface는 다른 클래스의 멤버들과 달리 다음과 같은 제약사항을 가지고 있다.
– 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다.
– 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다.

 

2. 인터페이스의 추상메서드의 몸통을 구현하는 자손클래스를 작성해야하는데 이때 인터페이스를 구현한다고 하며 키워드   implements를 사용한다.

 

3. 인터페이스 이름은 주로 playable과 같이 ~를 할 수 있는 의미인 able로 끝나게 작성한다. (권장)

 

4. 인터페이스를 구현한 자손 클래스는 인터페이스의 멤버 접근자보다 넓은 범위의 접근제어자를 지정해야 한다.
– interface의 멤버 void a(int a, int b)  <– 이 넘을 자손 클래스에서 구현할때 private void a() 이런식으로하면 에러

여하튼 다른 사람들이 인터페이스를 왜 사용해야 하느냐고 물어볼때는 확장성과 코드의 유연함이 주 목적이라고 말해야겠다.