기술면접

추상 클래스와 인터페이스의 차이는 무엇인가요

검은고양이개발자 2023. 1. 11. 10:49
반응형

추상 클래스는 메서드 시그니처만 존재하고 바디가 선언되어있지 않은 추상 메서드를 포함하는 클래스이기에

바로 객체를 생성하는 것이 불가능합니다.

이는 , 상속관계에 있어 유연하게 대응하기 위해 사용될 수 있다는 장점이 있습니다.

또한 클래스 내에 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말하는데

 

반면에 인터페이스는 상수(static final)와 추상 메서드(abstract method)의 집합입니다

인터페이스는 추상 클래스보다 추상화 정도가 높으며 추상클래스와는 다르게 구현부가 있는 일반 메서드,일반 멤버 변수를 가질 수 없다는 특징이 있으며 모든 메소드가 추상 메소드로 구성되어져 있습니다.

 

즉, 추상클래스에는 추상 메소드가 아닌 일반 메소드도 포함 될 수 있다는 차이가 존재합니다.

 

이런 단순한 차이 뿐만 아니라

인터페이스와 추상 클래스는 사용되는 , 즉 존재 목적 자체가 다르다는 차이점이 있습니다.

추상 클래스는 자신의 기능들을 하위로 확장시키는 데 목적이 있는 반면

인터페이스는 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 동일한 기능으로 구현하는 것을 목적으로 합니다.

 

또한 자바는 다중 상속을 지원하지 않아서 추상 클래스를 여러개 사용할 수 없지만,

인터페이스는 여러개의 인터페이스를 다중구현할 수 있습니다

그래서 추상클래스는 하나의 클래스에서 하위 클래스에 물려줄 특성이 풍부할 수록 좋고, 인터페이스는 다중 상속이 가능하기 때문에 각각의 인터페이스 목적에 맞는 최소한의 메서드를 선언하는 것이 좋습니다.

 

반응형