Unity&C#/C#

[C#] 클래스 상속, 추상클래스, 인터페이스

리네엔 2024. 10. 14. 22:47

1. 클래스 상속 (Class Inheritance)

  • What is Inheritance?
    • 기존 클래스 (부모 혹은 슈퍼)의 속성과 메서드를 새로운 클래스(자식 혹은 서브)가 물려받는 것
  • 특징
    • 코드 재사용 : 부모 클래스의 속성과 메서드를 자식클래스에서 재사용
    • 확장성 : 기능을 확장하거나 override 할 수 있음
    • C#에서는 단일 상속만 지원
  • 사용 시점
    • 공통 기능을 여러 클래스에서 재사용해야할 때
    • 기능을 확장하고 싶을 때

2. 추상 클래스 (Abstract Class)

[추상클래스]({{ site.baseurl }}/cs/2024/09/11/abstractclass)

  • What is Abstract Class?
    • 하나 이상의 추상 메서드를 포함할 수 있는 클래스
    • 실체 클래스의 공통적인 부분을 추출해 어느정도 규격을 잡아 놓은 추상적인 클래스
    • 인스턴스화 할 수 없으며, 자식 클래스에서 무조건 추상 클래스를 구현해야함.
  • 특징
    • 추상 메서드 : 자식 클래스에서 반드시 오버라이딩 해야하는 메서드
    • 일반 메서드
    • 인스턴스화 불가
    • 단일 상속
  • 사용 시점
    • 공통된 기본 기능을 가지면서, 세부적인 구현은 자식 클래스에 따라 다르게 정의해야 할 때.
    • 기본 동작을 구현하면서 일부 메서드만 자식 클래스에서 구체적인 구현을 강제하고 싶을 때

3. 인터페이스 (Interface)

  • What is Interface
    • 메서드와 속성의 규격만 정의하고 실제 구현은 하지 않는 클래스
  • 특징
    • 구현 없음
    • 다중 구현 가능 : 한 클래스에서 여러 인터페이스를 상속 받을 수 있음
    • 추상적인 계약 : 인터페이스는 어떤 클래스가 특정 기능을 제공한다는 계약을 명시
    • 인스턴스화 불가
  • 사용시점
    • 클래스간의 공통된 동작을 정의하고 이를 여러 클래스에서 다르게 구현할 때
    • 다중 상속이 필요한 경우
    • 공통된 기능을 명세할 때
  • 어? private 하면 에러가 뜬다고?*
    • [[인터페이스의 암묵적, 명시적 구현]]

클래스 상속, 추상 클래스, 인터페이스의 차이점 비교

구분 클래스 상속 추상 클래스 인터페이스
목적 코드 재사용 및 확장 기본적인 구현을 제공하면서 일부 기능을 강제 기능의 명세(계약)를 정의하고, 다중 구현 허용
구현 부모 클래스의 구현 상속 구현된 메서드와 추상 메서드를 모두 포함할 수 있음 구현 없음, 시그니처만 정의
다중 상속 지원하지 않음 (단일 상속) 지원하지 않음 (단일 상속) 다중 구현 가능
인스턴스화 인스턴스 생성 가능 인스턴스 생성 불가 (자식 클래스 통해 생성) 인스턴스 생성 불가 (구현 클래스 통해 사용)
사용 시점 공통된 기능을 상속받아 재사용할 때 공통된 기능을 제공하면서 일부 구현을 강제할 때 서로 다른 클래스들이 동일한 기능을 구현해야 할 때

'Unity&C# > C#' 카테고리의 다른 글

[C#] Serialization & Deserializaton  (0) 2024.10.14
[C#] String Builder  (0) 2024.10.14
[C#] Delegate, Event, Action 그리고 Func  (0) 2024.10.14
[C#] Console  (1) 2024.10.14
[C#] Operator Precedence  (0) 2024.10.14