1. 인터페이스
인터페이스란?
인터페이스의 사전적 의미는 다음과 같다.
하나의 시스템을 구성하는 2개의 구성 요소(하드웨어, 소프트웨어) 또는 2개의 시스템이 상호작용할 수 있도록 접속되는 경계(boundary), 이 경계에서 상호 접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리키는 말
자바에서 인터페이스는 여러가지 역할로 사용한다.
- 개발자 사이의 코드 규약을 정한다.
- 여러 구현체에서 공통적인 부분을 추상화한다.(다형성)
먼저 자바에서 인터페이스의 기본 개념을 알아보자.
자바 인터페이스는 기본적으로 추상메서드의 모음이다. 추상메서드는 아래와 같이 구현부가 없는 메서드를 말한다.
public interface Walkable { void walk(); }
구현부가 없으므로 인터페이스를 만든다면 반드시 구현하는 클래스를 만들어야 하며, 인터페이스를 구현하기로 한 클래스는 반드시 인터페이스에 명시되어 있는 추상메서드들을 모두 구현해야 한다. 만약 이를 구현하지 않으면 컴파일 에러가 발생한다
인터페이스를 사용하는 이유
인터페이스를 사용하는 주된 이유는 다형성을 위해서라고 생각한다. 다형성은 상속받은 클래스 또는 인터페이스의 메서드를 재정의하여 서로 다른 행동을 만들 수 있다. 상속을 통해 상위 클래스의 타입으로 통일한 후 하위 클래스들을 하나의 타입으로 관리할 수 있다. 이를 사용해서 변경에 유연한 코드를 만들 수 있다.
인터페이스는 구현체가 없다. 이를 구현한 클래스에서 모든 구현체를 만들어야 한다.(default 접근 제어자 제외) 예를 들어 한 인터페이스를 구현한 A, B 클래스가 있다고 하자. 현재는 A 클래스를 사용하고 있지만, 인터페이스를 잘 설계했다면 다른 기존 코드의 변경이 거의 없이 B 클래스로 쉽게 변경할 수 있다. 자바의 JDBC가 이렇게 구현되어 있으며, 스프링에서도 대부분 이러한 인터페이스 장점을 잘 활용하고 있다.
인터페이스와 상속 차이
다형성을 활용하기 위해서는 기본적으로 자바를 기준으로 클래스 상속과 인터페이스 구현으로 나뉜다. 이를 선택하는 것은 전적으로 개발자의 몫이다. 물론 이 판단을 도와주는 기준은 존재한다. 상속에 대해서는 일반적으로 다음과 같이 추천한다.
- 상속보다는 위임을 사용해라
- 다형성을 위한 것이라면 클래스 상속보다는 인터페이스를 구현하라.
위를 보면 대부분 상속을 추천하지 않는다. 그만큼 비용이 큰 작업이기 때문이다. 변하지 않는 구조에서 상속을 사용하면 중복 코드를 제거하고 깔끔하게 코드를 작성할 수 있지만, 변화가 발생하는 순간 상속 구조는 깨지기 쉽다.
출처: velog.io/@codemcd/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4Interface
[JAVA] 인터페이스(Interface)
인터페이스란? 인터페이스의 사전적 의미는 다음과 같다. > 하나의 시스템을 구성하는 2개의 구성 요소(하드웨어, 소프트웨어) 또는 2개의 시스템이 상호작용할 수 있도록 접속되는 경계(boundary),
velog.io
올인원 패키지 : JAVA 웹 개발 마스터👉https://bit.ly/35aoeAW
'패스트캠퍼스 환급 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {17} 회차 미션 (0) | 2020.11.19 |
---|---|
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {16} 회차 미션 (0) | 2020.11.18 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {14} 회차 미션 (0) | 2020.11.16 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {14} 회차 미션 (0) | 2020.11.15 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {13} 회차 미션 (0) | 2020.11.14 |