Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

Interface를 사용하는 이유와 장점 본문

Java/References

Interface를 사용하는 이유와 장점

defacto standard 2017. 11. 11. 22:50

디자인의 측면에서, Client 입장에서는 자신이 사용하는 구체적인 클래스를 몰라도, 인터페이스에 정의된 메서드를 사용하는 객체라는 것이 보장되어 있기 때문에 구체적인 클래스의 변경이 일어나더라도 Client의 코드수정은 불필요하다.

 

이는 클래스간의 결합도를 줄임으로써 얻는 효과이고 유지보수성의 향상이라는 이득을 취할 수 있다.

 

이와 같은 이점 때문에, 개발자의 입장에서 협업 시 독립적인 프로그래밍이 가능하고 이는 개발시간의 단축이라는 이득을 취할 수 있다. 추상클래스 역시 비슷한 개념으로서 사용될 수 있다.

<추상클래스와의 차이>

인터페이스 : 동일한 개념의 기능을 하는 클래스를 묶은 개념. 다중 구현 허용. static final 변수(단 하나만 존재, 수정 불가)만 가질 수 있다. 구현 객체의 같은 동작을 보장하기 위한 목적.

 

추상클래스 : 동일한 부모를 가지는 클래스를 묶은 개념. 단일 상속만 허용. 일반 변수를 가질 수 있다. 주로 개념의 확장에 쓰인다.

<Interface가 static final 변수만 가질 수 있는 이유>

인터페이스의 변수는 스스로 초기화 될 권한이 없다. 변수의 값은 static context 내에 할당되어야 하는데, 이때는 아무 인스턴스도 존재하지 않는 시점이기 때문.

 

<각각 어느 경우에 쓸 것인가>

상황에 따라 다르겠지만, 기본적으로 인터페이스를 쓸 것이다.

 

그 이유는, 코드의 가독성 때문이다.

 

추상클래스는 필드를 가질 수 있어 코드를 봤을 때 보아야 할 것들이 여러 가지이지만, 인터페이스는 어떤 기능을 하는 지 간략하게 볼 수 있기 때문이다.

 

만약 구상클래스끼리 겹치는 필드가 많아진다면, 인터페이스를 구현하는 추상클래스들을 만들고, 이를 상속받는 콘크리트 클래스를 둠으로써 2가지 모두 사용할 것이다.

Comments