티스토리 뷰
JAVA : Interface
인터페이스 란?
인터페이스는 구현은 하지않고 모드 기능을 추상화로 정의한 상태 즉, 모든 메소드의 선언만 정의한 추상메서드의 모음이다. 인터페이스는 상수(final) 변수와 추상 메서드만 가질 수 있다.
인터페이스는 구현과 상속을 둘 다 할 수 있다.
- 인터페이스 사이에는 상속을 할 수 있다. (다중 상속가능)
- 인터페이스를 implements하는 클래스는 해당 인터페이스를 구현해야한다.
인터페이스 역할
- 자식클래스에서 상속받아 사용되므로 다형성 (공통적인 부분을 추상화했기 때문에 )
- 개발자 사이의 코드 규약이 될 수 있다.
- 프로그램 유지보수성
- 쉽게 말하자면 같은 목적 하에 같은 기능을 수행하게하기 위해서 강제로 같은 기능의 함수를 정의하여 구현하게 하는 것이다.
인터페이스를 사용하는 이유
다형성
- 다형성은 상속받은 인터페이스나 클래스의 메소드를 재정의하여 서로 다른 행동을 만들 수 있다. 상속을 통해서 상위 클래스의 타입으로 통일한 후 하위 클래스들을 하나의 타입으로 관리할 수 있다. (예를 들어, 안드로이드 같은 경우 dataSource 인터페이스를 만든 후 dataSourceLocal, dataSourceRemote가 상속을 받아 구현을 한다. 그리고 dataSource가 필요한 곳에서 dataSourceLocal, dataSourceRemote 두 가지를 사용하는 것이 아니라 dataSource타입의 객체를 만들어서 사용한다.- dataSource타입으로 관리가 되기 때문)
클래스간 결합도를 낮출 수 있다.
- 객체지향 설계 원칙의 하나로 클래스간의 영향도를 낮출수록 좋다. (클래스간의 간접적인 관계로 변경) 사용자에게 인터페이스를 사용하여 제공하면, 제공자쪽에서 코드 변경이 있어도 사용자쪽에 직접적인 영향이 업다.
표준화가 가능하다.
- 구현해야할 것들을 정의하기 때문에 개발자들에게 정형화된 개발을 강요하여 표준화가 가능하다.
개발 시간을 단축 시킬 수 있다.
- 제공자쪽에서 구현이 덜 되어있어도 사용자쪽에서 인터페이스 명과 메서드 명만 알고 있어도 사용자쪽 개발이 가능하다.
인터페이스와 상속 차이
다형성을 활용하기 위해서 인터페이스, 상속 두 가지 방법이있다. 둘 중 하나를 선택하는 것은 개발자의 몫이다. 하지만 다형성을 위해서라면 상속보다는 인터페이스를 구현하라고 권장한다.
상속은 비용이 큰 작업이기 때문이다. 변하지 않는 구조에서 상속을 사용하면 중복 코드를 제거하고 깔끔하게 코드를 작성할 수 있지만, 변화가 발생하게 되면 상속 구조는 깨진다. 하지만 대부분 설계 이후 많이 변경되기 때문에 대부분 인터페이스를 사용한다.
참고 출처 :
정리가 잘 되어있는 사이트 (나중에 참고용 )
'Java' 카테고리의 다른 글
[Java] char to int (0) | 2020.03.23 |
---|---|
[Java] 객체 비교 (Comparator / Comparable) (0) | 2020.03.10 |
[Java] JVM (0) | 2020.03.03 |
[Java] Singleton (0) | 2020.03.03 |
[JAVA] String / StringBuffer / StringBuilder (0) | 2020.01.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- hashtable
- algorithm
- java
- 3-way-handshake
- 백트래킹
- git
- MFQ
- 프로그래머스
- programmers
- 프로세스 스케줄링
- hash
- 우선순위큐
- Process Scheduling
- MLQ
- 자료구조
- SWExpert
- Objective function
- 사회망서비스
- 기능개발
- 4-way-handshake
- binarySearch
- 농협정보시스템IT
- 네트워크
- 백 트래킹
- SRTN
- N-Queen
- DFS
- Android
- 알고리즘
- loss function
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함