- 기술 면접 예상 질문 - 인터페이스와 추상클래스의 차이를 설명해주세요.
기술 면접 예상 질문 - 인터페이스와 추상클래스의 차이를 설명해주세요.
인터페이스와 추상클래스는 모두 객체의 일부분을 추상화하여 정의하고 실제 객체는 상속, 구현을 통해서 구현하는 방법입니다.
둘다 직접적으로는 객체를 생성할 수 없습니다.
인터페이스는 필드를 가질 수 없고 어떤 메서드의 시그니처를 정의하는 것으로 인터페이스를 구현한 클래스에게
특정 메서드의 정의를 강요하는 방법입니다. 이때 인터페이스에서는 메서드를 아예 구현할 수 없었으나
C# 8.0 버전 부터는 디폴트 인터페이스 멤버를 구현할 수 있다고 합니다.
인터페이스를 구현한 하위 클래스에서 같은 상황에서 발생할 객체마다의 다른 기능을 정의할 수 있습니다.
그리고 C#에서는 다중 상속을 지원하지 않지만 인터페이스의 구현에는 아무런 제약이 없습니다.
추상 클래스는 어떤 객체를 추상화 한 클래스로 필드를 가지고 abstract로 메서드를 구현할 수 있습니다.
abstract는 virtual과는 다르게 하위클래스에게 해당 메서드의 오버라이딩을 강요합니다.
추상 클래스는 상속해서 사용해야 되기 때문에 C#처럼 다중 상속을 지원하지 않는 경우에는 다른 클래스를 상속 받을 수 없다는 특징이 있습니다.
결국 인터페이스와 추상클래스의 차이는 필드와 일반 메서드를 가질 수 있냐 없냐의 차이와 다중 상속에서의 제약에서 차이가 있습니다.