728x90
객체 지향 프로그래밍(OOP)에서 상속은 코드의 재사용성을 높이고, 클래스 간의 자연스러운 계층 구조를 확립하며, 코드의 조직화를 향상시키는 중요한 개념입니다. 이 블로그 포스트에서는 상속의 주요 개념과 실용적인 예시를 통해 상속의 이점을 살펴보겠습니다.
상속의 주요 개념
1. 기본 클래스와 파생 클래스
- 기본 클래스(부모 클래스): 속성과 메서드가 상속되는 클래스입니다.
- 파생 클래스(자식 클래스): 기본 클래스로부터 속성과 메서드를 상속받는 새로운 클래스입니다.
2. 접근 제한자
접근 제한자는 기본 클래스나 파생 클래스의 멤버가 어떻게 접근될 수 있는지를 결정합니다. 일반적인 접근 제한자는 다음과 같습니다:
public: 다른 모든 코드에서 접근 가능합니다.protected: 자신의 클래스와 파생 클래스에서 접근 가능합니다.private: 자신의 클래스 내에서만 접근 가능합니다.
3. 메서드 오버라이딩
파생 클래스는 기본 클래스에 이미 정의된 메서드에 대해 특정 구현을 제공할 수 있습니다. 이 과정을 오버라이딩이라고 합니다.
4. 생성자 동작
파생 클래스의 인스턴스를 생성할 때, 파생 클래스의 생성자를 실행하기 전에 기본 클래스의 생성자가 먼저 호출됩니다.
728x90
실용적인 예시
동물과 관련된 예시를 통해 상속을 설명해 보겠습니다:
// 기본 클래스
public class Animal
{
public string Name { get; set; }
public void Eat()
{
Console.WriteLine($"{Name} is eating.");
}
}
// 파생 클래스
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine($"{Name} says Woof!");
}
}
// 또 다른 파생 클래스
public class Cat : Animal
{
public void Meow()
{
Console.WriteLine($"{Name} says Meow!");
}
}
이 예시에서:
Animal기본 클래스는Name속성과Eat()메서드를 가지고 있습니다.Dog와Cat은Animal로부터 상속받은 파생 클래스이며, 각각 고유한 메서드(Bark()는 개를 위해,Meow()는 고양이를 위해)를 가지고 있습니다.
다음과 같이 인스턴스를 생성할 수 있습니다:
Dog myDog = new Dog();
myDog.Name = "Buddy";
myDog.Eat(); // 출력: Buddy is eating.
myDog.Bark(); // 출력: Buddy says Woof!
Cat myCat = new Cat();
myCat.Name = "Whiskers";
myCat.Eat(); // 출력: Whiskers is eating.
myCat.Meow(); // 출력: Whiskers says Meow!
상속의 이점
- 코드 재사용성: 기본 클래스에서 공통 기능을 상속받음으로써 여러 클래스에 걸쳐 코드를 중복하지 않게 됩니다.
- 논리적 구조: 코드가 계층적 관계로 조직화되어 이해하기 쉬워집니다.
- 다형성 지원: 공통 슈퍼클래스에 대한 참조를 통해 다양한 서브클래스를 처리할 수 있어 더 유연한 코딩이 가능합니다.
결론
상속은 C# 객체 지향 프로그래밍에서 더 나은 조직화, 재사용성 향상, 관련 객체 간의 다형적 행동을 지원함으로써 중요한 역할을 합니다. 상속을 이해하면 다형성 자체나 이러한 원칙이 광범위하게 적용되는 디자인 패턴과 같은 더 복잡한 주제를 마스터하는 데 도움이 될 것입니다.
728x90
'프로그래밍 > C#' 카테고리의 다른 글
| 객체 지향 프로그래밍의 핵심: 캡슐화의 이해와 활용 (1) | 2025.08.25 |
|---|---|
| C#에서 다형성을 활용한 유연한 프로그래밍 (0) | 2025.08.25 |
| 객체 지향 프로그래밍(OOP)과 C#의 클래스 및 객체 이해하기 (0) | 2025.08.24 |
| C# 프로그래밍: 최상의 관행과 코딩 표준 (0) | 2025.08.23 |
| C# 명명 규칙: 명확하고 효율적인 코드 작성을 위한 가이드 (0) | 2025.08.23 |