일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카데인 알고리즘
- Easy
- hash table
- 사칙연산
- JAVA11
- 자바입력
- Kadane's Algorithm
- 자바 스레드 실행 순서 제어
- array
- 수학
- 자바 thread 실행 순서 제어
- heroku
- input
- R
- scanner
- SpringBoot 2
- Today
- Total
DeFacto-Standard IT
Interface를 사용하는 이유와 장점 본문
디자인의 측면에서, Client 입장에서는 자신이 사용하는 구체적인 클래스를 몰라도, 인터페이스에 정의된 메서드를 사용하는 객체라는 것이 보장되어 있기 때문에 구체적인 클래스의 변경이 일어나더라도 Client의 코드수정은 불필요하다.
이는 클래스간의 결합도를 줄임으로써 얻는 효과이고 유지보수성의 향상이라는 이득을 취할 수 있다.
이와 같은 이점 때문에, 개발자의 입장에서 협업 시 독립적인 프로그래밍이 가능하고 이는 개발시간의 단축이라는 이득을 취할 수 있다. 추상클래스 역시 비슷한 개념으로서 사용될 수 있다.
<추상클래스와의 차이>
인터페이스 : 동일한 개념의 기능을 하는 클래스를 묶은 개념. 다중 구현 허용. static final 변수(단 하나만 존재, 수정 불가)만 가질 수 있다. 구현 객체의 같은 동작을 보장하기 위한 목적.
추상클래스 : 동일한 부모를 가지는 클래스를 묶은 개념. 단일 상속만 허용. 일반 변수를 가질 수 있다. 주로 개념의 확장에 쓰인다.
<Interface가 static final 변수만 가질 수 있는 이유>
인터페이스의 변수는 스스로 초기화 될 권한이 없다. 변수의 값은 static context 내에 할당되어야 하는데, 이때는 아무 인스턴스도 존재하지 않는 시점이기 때문.
<각각 어느 경우에 쓸 것인가>
상황에 따라 다르겠지만, 기본적으로 인터페이스를 쓸 것이다.
그 이유는, 코드의 가독성 때문이다.
추상클래스는 필드를 가질 수 있어 코드를 봤을 때 보아야 할 것들이 여러 가지이지만, 인터페이스는 어떤 기능을 하는 지 간략하게 볼 수 있기 때문이다.
만약 구상클래스끼리 겹치는 필드가 많아진다면, 인터페이스를 구현하는 추상클래스들을 만들고, 이를 상속받는 콘크리트 클래스를 둠으로써 2가지 모두 사용할 것이다.
'Java > References' 카테고리의 다른 글
String / StringBuffer / StringBuilder (0) | 2017.11.15 |
---|---|
익명 클래스 / 익명 객체 (0) | 2017.11.11 |
상속(Inheritance) / 구현(Implementation) 차이점과 특징 및 장단점 (0) | 2017.11.11 |
Overriding / Overloading (0) | 2017.11.11 |
객체지향 / 절차지향 (0) | 2017.11.11 |