본문 바로가기
Back/Java

추상 클래스와 인터페이스

by chris_jaehun 2023. 3. 7.
반응형

먼저 클래스는 크게 일반 클래스와 추상 클래스로 나뉜다. 인터페이스나 추상 클래스를 사용하는 이유는, 설계 시 인터페이스나 추상 클래스를 잘 설계해 두면 개발과정에서 기능 구현에만 집중할 수 있기 때문이다.

- 추상 클래스 ( Abstract Class )

추상 클래스는 클래스 내 '추상 메서드'가 하나 이상 포함되거나 abstract로 정의된 경우이다. 추상 클래스에 기본적으로 공통된 기능들은 구현해 두고, 그렇지 않은 기능들은 추상 메서드로 남겨두는 식으로 기능들을 확장시키는 용도로 사용된다.

- 인터페이스 ( Interface )

반면 인터페이스는 그저 추상 메서드가 포함된 클래스가 아닌 모든 메서드가 추상 메서드로 이루어져 있는 걸 뜻한다. 인터페이스 내의 모든 메서드는 abstract 메서드이기 때문에 굳이 abstract를 선언하지 않는다. 인터페이스는 추상 클래스보다 더 추상화되어 있는 클래스라고 보면 될 것 같다. 즉, 인터페이스와 추상 클래스는 미리 구현된 메서드가 존재하냐 하지 않느냐의 차이라고 할 수 있다.

자바에서는 클래스의 다중 상속을 막았기 때문에 추상 클래스의 다중 상속은 불가능하지만 인터페이스는 추상 클래스와는 달리 다중 상속이 가능하다. (= 여러 인터페이스를 다중으로 상속받는 것이 가능하다.)

 

추상 클래스 안에 추상 메서드를 여러 개 두거나 전부 추상 메서드로 두면 될 텐데
왜 인터페이스가 따로 필요한 걸까?

둘은 사용 목적에 차이가 있다.

추상 클래스 해당 추상 클래스를 상속받아 기능을 확장시키는 것에 목적이 있는 반면,

인터페이스는 함수의 구현을 강제해서 구현된 인스턴스의 같은 기능을 보장하는 것이 목적다.

 

반응형