-
[Java] 인터페이스(Interface)Java 2021. 12. 16. 22:35728x90
인터페이스(Interface)란?
인터페이스는 사전적 의미로 서로 다른 두 시스템, 장치 , 소프트웨어를 이어 주는 부분이며 대표적으로 프로그램과 사용자 사이를 이어주는 GUI가 대표적입니다.
사용자는 구현에 관심이 있고 자바 입장에서는 사용에 관심이 있습니다.
내부적으로 동작은 어떻게 하는지 모르지만 사용자는 인터페이스를 이용하여 추상화하고 자바 입장에서는 이를 사용해야 하기 때문에 이를 인터페이스라고 부릅니다.
자바에서 인터페이스는 일종의 추상클래스입니다.
하지만 추상 클래스보다 추상화 정도가 높아 일반 메서드, 멤버 변수를 구성원으로 가질 수 없습니다.
추상 클래스가 미완성 설계도라면 인터페이스는 기본 설계도라고 할 수 있습니다.
인터페이스는 추상 클래스처럼 다른 클래스를 작성하는데 도움을 주는 목적으로 작성되며 클래스와는 다르게 다중 상속이 가능합니다.
인터페이스 사용법
선언부에 'interface'라는 예약어를 붙여 만들 수 있습니다.
다음은 인터페이스 예시입니다
interface 인터페이스이름{ public static final 상수이름 = 값; public static abstract void 메서드이름(); }
인터페이스는 추상화된 메서드를 다시 구현해야 하기 때문에 추상 클래스와 동일한 역할을 수행하는 것처럼 보입니다.
인터페이스의 모든 멤버변수는 public static final이며 생략 가능합니다.
인터페이스의 모든 메서드는 public abstract 이며 생략 가능합니다.
그러면 추상 클래스만 있으면 될텐데 왜 인터페이스가 존재할까요?
추상클래스만 사용한다면 다른 추상 클래스를 상속하는데 공통된 기능이 필요할 경우가 발생할 수 있습니다.
이때 해당 기능을 인터페이스를 작성하여 구현하면 됩니다.
추상 클래스와 인터페이스의 차이점
1. 사용 의도 차이점
추상 클래스는 "~이다"
인터페이스는 "~을 할 수 있는"
2. 공통된 기능 사용 여부
모든 클래스가 인터페이스만 사용한다면 공통으로 필요한 기능들도 모든 클래스에서 오버 라이딩하여 재정의 해야 하는 번거로움이 있습니다.
이렇게 공통된 기능이 필요한 경우에는 추상 클래스를 이용하여 일반 메서드를 작성하여 자식 클래스에서 사용할 수 있도록 합니다.
3.인터페이스는 다중상속이 가능하다
추상 클래스는 단일 상속으로 제한되지만 인터페이스를 이용하면 다중 상속을 할 수 있습니다.
실제 적용 예시
아래 그림으로 추상클래스 인터페이스 예제(생명체)를 보면서 이해해 보겠습니다.
추상 클래스는 "~이다" , 인터페이스는 "~을 할 수 있다" 관점을 다시 사용해보겠습니다.
사람은 생물이다.
케빈은 사람이다.
동물은 생물이다.
거북이는 동물이다.
비둘기는 동물이다.
사람은 말을 할 수 있다.
케빈은 프로그래밍을 할 수 있다.
케빈과 거북이는 수영을 할 수 있다. (서로 다른 추상 클래스를 상속하지만 공통된 기능이 필요한 경우)
비둘기는 날 수 있다.
그렇기 때문에 위의 그림처럼 클래스와 인터페이스를 작성되게 됩니다.
간단하게 마무리하자면
추상클래스 사용 시기 : 상속 관계를 쭉 타고 올라갔을 때 같은 조상 클래스를 상속하는데 기능까지 완변히 똑같은 기능이 필요한 경우
인터페이스 사용 시기 : 상속 관계를 쭉 타고 올라갔을때 다른 조상클래스를 상속하는데 같은 기능이 필요할 경우 인터페이스 사용
출처
https://myjamong.tistory.com/150
728x90'Java' 카테고리의 다른 글
[Java] 제네릭/지네릭스(Generics)란? (0) 2021.12.30 [Java] 어노테이션(Annotation) (0) 2021.12.20 [Java] 추상클래스(Abstract Class) (0) 2021.12.15 [Java] 배포란?(+ CI/CD) (0) 2021.12.03 [Java] 빌드란?(+빌드 도구) (0) 2021.11.30