티스토리 뷰

Java

[Java] Interface

cherishee 2020. 3. 3. 16:44

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
링크
«   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
글 보관함