2024. 9. 13. 16:05ㆍc#
C#에서 상속의 개념 및 구현
상속(Inheritance)은 객체지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 기존 클래스의 속성과 메서드를 새로운 클래스에서 재사용할 수 있도록 하는 기능입니다. 상속을 통해 코드의 재사용성을 높이고, 계층적 관계를 표현할 수 있습니다. 이 포스팅에서는 C#에서 상속의 개념과 이를 구현하는 방법에 대해 알아보겠습니다.
1. 상속이란 무엇인가?
상속의 정의
상속(Inheritance)은 하나의 클래스가 다른 클래스의 모든 기능을 물려받아 사용하는 기능을 의미합니다.
상속을 통해 자식 클래스(파생 클래스)는 부모 클래스(기반 클래스)의 속성(필드)과 메서드를 재사용하거나, 새로운 기능을 추가할 수 있습니다.
상속의 장점
- 코드 재사용성: 부모 클래스에서 정의된 코드를 자식 클래스에서 재사용할 수 있어 중복 코드를 줄일 수 있습니다.
- 유지보수 용이성: 부모 클래스에서 변경이 발생하면, 이를 상속받은 모든 자식 클래스에 자동으로 적용됩니다.
- 계층적 구조 표현: 클래스 간의 계층적 관계를 명확하게 표현할 수 있어, 객체 간의 관계를 이해하기 쉽습니다.
2. C#에서 상속 구현하기
기본 상속 구문
C#에서 상속을 구현하는 기본 구문은 다음과 같습니다:
public class 부모클래스이름
{
// 부모 클래스의 필드와 메서드
}
public class 자식클래스이름 : 부모클래스이름
{
// 자식 클래스의 필드와 메서드
}
상속 구현 예제
// 부모 클래스
public class Animal
{
public string Name;
public int Age;
public void Eat()
{
Console.WriteLine($"{Name}이(가) 먹고 있습니다.");
}
}
// 자식 클래스
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine($"{Name}이(가) 짖고 있습니다.");
}
}
위 예제에서 Dog 클래스는 Animal 클래스를 상속받습니다.
따라서 Dog 클래스는 Animal 클래스의 Name, Age 필드와 Eat 메서드를 사용할 수 있으며,
추가로 Bark 메서드를 정의하여 기능을 확장했습니다.
상속의 특징
- 단일 상속: C#에서는 한 번에 하나의 부모 클래스만 상속받을 수 있습니다.
- 재정의(Overriding): 자식 클래스는 부모 클래스의 메서드를 재정의할 수 있습니다. 이를 통해 자식 클래스에서 부모 클래스의 동작을 변경할 수 있습니다.
- 기본 생성자 호출: 자식 클래스의 생성자가 호출되면, 자동으로 부모 클래스의 기본 생성자가 먼저 호출됩니다. 이를 통해 부모 클래스의 초기화 작업이 우선 수행됩니다.
3. 메서드 오버라이딩(Overriding)
메서드 오버라이딩이란?
메서드 재정의(Overriding)는 자식 클래스에서 부모 클래스의 메서드를 다시 정의하여, 부모 클래스의 동작을 변경하거나 확장하는 기능입니다. 재정의를 위해 virtual 키워드를 사용하여 부모 클래스의 메서드를 선언하고, 자식 클래스에서는 override 키워드를 사용해 재정의합니다.
메서드 재정의 예제
// 부모 클래스
public class Animal
{
public string Name;
public virtual void MakeSound()
{
Console.WriteLine($"{Name}이(가) 소리를 냅니다.");
}
}
// 자식 클래스
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine($"{Name}이(가) 짖고 있습니다.");
}
}
위 예제에서 Animal 클래스의 MakeSound 메서드는 virtual로 선언되어, 자식 클래스인 Dog에서 override 키워드를 사용하여 재정의되었습니다. 이를 통해 Dog 클래스에서는 MakeSound 메서드가 짖고 있습니다.라는 메시지를 출력합니다.
4. 사용 시나리오
상속의 활용 사례
- 동물 분류 시스템: Animal 클래스를 기본 클래스로 사용하고, 이를 상속받아 Dog, Cat, Bird 등의 파생 클래스를 정의할 수 있습니다.
- 직원 관리 시스템: Employee 클래스를 상속받아 Manager, Engineer, Intern 등의 파생 클래스를 정의하여, 각 직급에 따라 다른 속성과 메서드를 추가할 수 있습니다.
- GUI 구성 요소: Control 클래스를 상속받아 Button, Label, TextBox 등의 파생 클래스를 정의할 수 있습니다. 이를 통해 공통된 기능을 재사용하고, 각 구성 요소에 특화된 기능을 추가할 수 있습니다.
상속은 C#에서 코드의 재사용성을 높이고, 계층적 구조를 명확하게 표현하는 강력한 기능입니다.
이를 통해 클래스 간의 관계를 정의하고, 유지보수성을 높일 수 있습니다. 메서드 오버라이딩(Overriding)을 활용하면, 자식 클래스에서 부모 클래스의 기능을 확장하거나 변경할 수 있어 객체지향 프로그래밍의 유연성을 극대화할 수 있습니다.
'c#' 카테고리의 다른 글
c# 인터페이스 정의 및 구현 (2) | 2024.09.18 |
---|---|
c# 다형성(polymorphism)의 이해와 구현 (0) | 2024.09.13 |
C# 접근 제어자: public, private, protected (0) | 2024.09.11 |
C# 필드와 속성, 메서드 정의 (0) | 2024.09.11 |
c# 클래스 선언 및 객체 생성 (0) | 2024.09.11 |