클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?
상속선언을 통해 파생 클래스가 기본 클래스의 모든 공용 및 보호된 멤버를 상속받게 한다. public class B : A
클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.
다중 상속을 사용한 객체 지향 프로그래밍에서 발생하는 모호성 문제, 이 문제는 두 개의 클래스가 동일한 기본 클래스를 상속받고, 그 클래스들을 다시 다른 클래스가 상속받을 때 발생한다. C#의 경우에는 원칙적으로 클래스간의 다중상속을 막아 이 문제를 처음부터 예방하고 있다. 그러나 인터페이스는 다중 상속을 지원 하는데 인터페이스간 똑같은 메서드를 가졌다 하더라도 명시적 인터페이스 구현(explicit interface implementation)을 통해 모호성을 해결할 수 있다.
인터페이스란 무엇인가요?
강제 구현을 통한 함수명의 통일화와 다중 상속을 통해 원하는 기능을 탈부착 하기 위해 사용하는 것, 클래스도 물론 다른 클래스에 상속이 가능하나, 다중 상속이 불가능 하며 이 점이 인터페이스와 가장 큰 차이이다.
인터페이스와 추상클래스의 차이는 무엇인가요?
사용 목적: 인터페이스: 특정 행위를 규정하고 계약을 정의하는 데 사용된다. 객체가 무엇을 할 수 있는지를 명시적으로 정의한다. 추상 클래스: 공통된 기본 구현을 제공하며, 관련 클래스 간에 코드를 공유하고 일관된 기본 동작을 제공하기 위해 사용된다.
멤버의 종류: 인터페이스: 인스턴스 필드, 생성자, 소멸자는 가질 수 없다. 추상 클래스: 필드, 생성자, 소멸자, 속성, 메서드 등을 가질 수 있다.
다중 상속 가능 여부: 인터페이스: 다중 상속이 가능, 한 클래스가 여러 인터페이스를 구현할 수 있다. 추상 클래스: 단일 상속만 가능, 한 클래스는 하나의 추상 클래스만 상속받을 수 있다.
'Record > TIL' 카테고리의 다른 글
[Unity] 터레인 (0) | 2024.07.10 |
---|---|
[Unity] 스택 메모리 vs 힙 메모리 (0) | 2024.07.09 |
[Unity] 블렌더 트리로 애니메이션 4방향 작업하기 (3) | 2024.07.05 |
[Unity] 유니티로 픽셀 이미지(스프라이트) 가져올때 깨지거나 화질구려질때 해결방법 (0) | 2024.07.04 |
[C#] Override와 Overload란? (0) | 2024.07.03 |