기술면접 - 인터페이스와 추상클래스의 차이를 설명해주세요.
작성자 정보
- 마스터 작성
- 작성일
본문
Q - 인터페이스와 추상클래스의 차이를 설명해주세요.
A -
인터페이스 - 여러개 상속 가능, 상수만 허용
추상클래스 - 하나의 클래스만 상속 가능, 변수, 상수 모두 가능
[GPT]
인터페이스(Interface)와 추상 클래스(Abstract Class)는 Java와 같은 객체지향 프로그래밍 언어에서 공통적인 특성이나 메소드를 여러 클래스에 걸쳐 사용할 수 있도록 해주는 두 가지 주요 메커니즘입니다. 비록 둘 다 인스턴스화할 수 없으며, 하나 이상의 메소드가 구현되지 않은 채로 남겨져 있을 수 있지만, 이들 사이에는 몇 가지 중요한 차이점이 있습니다.
인터페이스(Interface)
인터페이스는 모든 메소드가 기본적으로 추상 메소드(구현부가 없는 메소드)인, 일종의 계약입니다. 클래스가 인터페이스를 구현할 때, 인터페이스에 선언된 모든 메소드를 구현해야합니다. Java 8부터는 인터페이스에
default
메소드와
static
메소드를 구현할 수 있게 되어, 일부 구현을 포함할 수 있게 되었습니다.
주요 특징모든 메소드는 기본적으로
public
이며, 추상적입니다.필드는
public
,
static
,
final
만을 허용합니다.다중 상속이 가능합니다. 즉, 한 클래스가 여러 인터페이스를 구현할 수 있습니다.
default
와
static
메소드를 포함할 수 있습니다(Java 8 이상).
추상 클래스(Abstract Class)
추상 클래스는 하나 이상의 추상 메소드를 포함할 수 있는 클래스입니다. 추상 클래스는 부분적으로 구현된 클래스로 볼 수 있으며, 일부 메소드는 구현되고 일부는 구현되지 않을 수 있습니다. 이를 상속받는 서브 클래스는 모든 추상 메소드를 구현해야 합니다.
주요 특징0개 이상의 추상 메소드를 포함할 수 있습니다.비추상 메소드(구현된 메소드)도 포함할 수 있습니다.필드는 어떤 접근 제어자도 사용할 수 있습니다.단일 상속만을 지원합니다. 즉, 클래스는 하나의 추상 클래스만 상속받을 수 있습니다.생성자를 포함할 수 있으며, 이를 통해 초기화 과정을 가질 수 있습니다.
인터페이스 vs 추상 클래스
용도의 차이: 인터페이스는 다양한 클래스가 같은 인터페이스를 구현함으로써 같은 동작을 보장하도록 할 때 사용됩니다. 반면, 추상 클래스는 여러 클래스 사이에 공통된 코드를 공유할 목적으로 사용됩니다.상속과 구현: 클래스는 여러 인터페이스를 구현할 수 있지만, 하나의 추상 클래스만 상속받을 수 있습니다.멤버 변수: 인터페이스는 상수 필드만을 가질 수 있는 반면, 추상 클래스는 상수와 변수 모두를 멤버로 가질 수 있습니다.메소드 구현: 인터페이스는 모든 메소드가 추상 메소드이거나 default/static 메소드만 구현이 가능하지만, 추상 클래스는 추상 메소드와 일반 메소드 모두를 포함할 수 있습니다.
이러한 차이점을 이해하는 것은 객체지향 설계에서 중요하며, 상황에 따라 인터페이스와 추상 클래스 중 적절한 선택을 하는 것이 중요합니다.
관련자료
-
이전
-
다음