Deff_Dev
[C#] 상속과 인터페이스 본문
클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?
public class C
{
}
public class D : C // 상속
{
}
- 클래스를 선언할 때, 클래스 이름 옆에 : 상속 받을 클래스 이름 작성하면된다.
클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.
- 다이아몬드 문제는 두 개의 다른 하위 클래스가 동일한 상위 클래스를 상속받고, 이를 다시 다중 상속받는 클래스에서 발생한다. 이러한 구조로 인해 다중 상속을 받는 클래스는 동일한 상위 클래스의 인스턴스를 두 번 상속받게 되어, 메서드 호출이나 속성 참조 시 어떤 경로를 통해 상속받은 것인지 모호해진다.
- C#, Java은 다중 상속을 지원하지 않고 단일 상속만 지원하여 다이아몬드 문제를 해결하고 인터페이스는 다중 상속을 지원하여 다중 상속의 유연성을 제공한다.
인터페이스란 무엇인가요?
- 추상 클래스에서 추상적인 부분(추상 메소드, 프로퍼티)만 따로 떼어 구현한 것으로 추상 클래스와 같이 다른 클래스의 구현, 사용 방향을 제시하는 목적으로 사용한다.
인터페이스와 추상클래스의 차이는 무엇인가요?
- 추상 클래스는 다른 클래스들 같이 필드, 메소드 등 구현 가능하고 여기에 추가적으로 추상 메소드나 프로퍼티를 선언 가능하지만 클래스이기 때문에 단일 상속을 지원한다.
- 인터페이스는 추상 메소드나 프로퍼티만 선언할 수 있고, 클래스와 달리 다중 상속을 지원한다.
'면접 질문 정리 > C#' 카테고리의 다른 글
[C#] C# 심화 문법 (Generic, Linq, Reflection) (0) | 2024.07.09 |
---|---|
[C#] 가비지 컬렉터 (Garbage Collectior) (0) | 2024.07.08 |
[C#] 스택 메모리, 힙 메모리 (0) | 2024.07.04 |
[C#] 콜백, delegate, event (0) | 2024.07.03 |
[C#] 객체 지향 프로그래밍 (0) | 2024.07.02 |