C#객체지향

상속 기본

공통 동작을 부모 클래스에서 재사용하고, 필요한 부분을 자식 클래스에서 확장하는 C# 상속 기본 구조입니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
public class Animal
{
    public virtual void Speak() => Console.WriteLine("...");
}

public class Dog : Animal
{
    public override void Speak() => Console.WriteLine("Woof");
}

설명

  • 상속은 공통 인터페이스와 기본 동작을 부모 클래스에 두고, 자식 클래스가 세부 구현을 바꾸게 합니다.
  • 부모의 메서드를 재정의하려면 virtual, 자식에서는 override를 사용합니다.
  • 자식 타입은 부모 타입으로 취급될 수 있으므로 다형성 기반 설계가 가능합니다.
  • 단순 코드 재사용만을 위해 상속을 남용하면 클래스 계층이 복잡해질 수 있습니다.

짧은 예제

csharp
Animal[] animals =
{
    new Animal(),
    new Dog()
};

foreach (Animal animal in animals)
{
    animal.Speak();
}

빠른 정리

항목설명
:상속 선언
virtual부모에서 재정의 가능하도록 열어 둠
override자식에서 재정의
다형성부모 타입으로 여러 자식 타입을 다룸
base부모 구현이나 생성자에 접근

주의할 점

상속은 "is-a" 관계가 분명할 때 더 잘 맞습니다. 단지 기능 몇 개를 재사용하고 싶다는 이유만으로는 합성이나 인터페이스가 더 나을 수 있습니다.