추상클래스란?
객체를 생성할 수 없고, 상속받은 자식으로부터 기능들을 구현해야 하는 클래스.
인터페이스란?
다중상속이 허용되지 않는 C#에서 객체지향 프로그래밍을 더 강력하게 사용하기 위한 것으로 추상 클래스 보다 높은 수준의 추상 멤버로만 구성된 클래스
클래스의 다중상속을 막은 이유
몬스터를 상속받는 슬라임과 드래곤이 있을 때 둘다 몬스터의 추상함수를 구현했다고 가정하고 슬라임과 드래곤을 둘 다 상속받는 슬라임 드래곤이 있을 경우 위에서 구현한 추상함수는 어떤걸 사용하는 것인지 모르기 때문에 다중상속을 막아둔 것이다.
추상클래스와 인터페이스의 차이점
추상클래스는 확장이 목표, 인터페이스는 그 기능의 구현이 목표 즉 상속은 확장, 인터페이스는 실체화라고 생각하면 편하다.
인터페이스 사용예시
예를 들어 인간과 고양이는 달릴 수 있다. 그렇다면 Animal 로 묶어서 달리기를 오버라이딩 하면되지않을까? 그때 만약 차도 달릴 수 있어야한다면 car도 Animal을 상속받아야하는것인가? 아니다. 상속은 정체성도 물려받기 때문에 차는 동물이 아니므로 구조가 이상하다. 그래서 우리는 인터페이스로 IRunable을 각각 상속받아 실체화하는 것이다.
코드예시
'C#' 카테고리의 다른 글
IComparable 인터페이스 상속을 통한 클래스 정렬 (0) | 2023.11.30 |
---|---|
델리게이트와 event (0) | 2023.11.08 |
ScriptableObject (0) | 2023.09.08 |
코루틴 (0) | 2023.09.01 |
컴포넌트 개념과 값형식 참조형식 (0) | 2023.08.16 |