on
[Java] 인터페이스와 추상클래스에 대해서 알아보자
[Java] 인터페이스와 추상클래스에 대해서 알아보자
300x250
이미지 출처 Oracle
Java에서 많이 헷갈리는 개념인 인터페이스와 추상클래스에 대해서 알아보는 시간을 갖도록 하겠다.
① 인터페이스 (Interface)
(1) 개념
- 동일한 목적 하의 동일한 기능을 수행하게끔 강제하는 기능.
- 클래스들이 구현해야 하는 동작을 지정한다.
- 가장 기본적인 설계도라고 생각하면 된다.
(2) 특징
- 다중상속을 지원한다.
- 선언 시 interface 키워드를 사용한다.
- 상속을 위해서 implements 키워드를 사용한다.
- 인스턴스화 할 수 없다.
(3) 사용의도
- 상속 관계를 타고 올라갔을 때 다른 조상 클래스를 상속하더라도, 같은 기능이 필요할 경우 사용한다.
- 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용한다.
(4) 주로 사용하는 경우
- 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우
ex) Comparable, Clonable 인터페이스는 여러 클래스들에서 구현되는데, 구현클래스들 간에 관련성이 없다.
- 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우.
- 다중 상속을 허용하고 싶은 경우
② 추상클래스 (Abstract class)
(1) 개념
- 부모 클래스에서 정의만 해놓고, 실제 동작은 자식 클래스에서 한다.
- 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이다.
- 미완성 설계도라고 생각하면 된다.
(2) 특징
- 다중상속을 지원하지 않는다.
- 선언 시 abstract 키워드를 사용한다.
- 상속을 위해서 extends 키워드를 사용한다.
- 인스턴스화 할 수 없다.
(3) 사용의도
- 상속할 각 객체들의 공통점을 찾아 추상화시켜 놓은 것으로, 상속 관계를 타고 올라갔을 때 같은 부모 클래스를 상속한다.
- 부모 클래스가 가진 기능들을 구현해야할 경우 사용한다.
(4) 주로 사용하는 경우
- 서로 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우.
- 추상 클래스를 상속 받는 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public이외의 접근자(protected, private) 선언이 필요한 경우
- non-static, non-final 필드 선언이 필요한 경우 (각 인스턴스에서 상태 변경을 위한 메소드가 필요한 경우)
※ 참조
300x250
from http://iwillcomplete.tistory.com/41 by ccl(A) rewrite - 2021-10-07 20:01:13