[C#] C#의 Overriding 이해하기
안녕하세요! 오늘은
C#의 Overriding에 대해 알려드리겠습니다. Overriding은 상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말합니다. 이를 통해 다형성을 구현하고 객체 지향 프로그래밍의 장점을 활용할 수 있습니다.
1. Overriding의 개념
- Overriding은 상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것입니다.
- 부모 클래스의 메서드와 동일한 시그니처(이름, 매개변수, 반환 타입)를 가진 메서드를 자식 클래스에서 구현합니다.
- 자식 클래스에서 재정의된 메서드는 부모 클래스의 메서드를 가리키며, 동일한 메서드 호출 시 자식 클래스의 메서드가 실행됩니다.
2. Overriding의 사용법
- 부모 클래스의 메서드에 virtual 키워드를 사용하여 Overriding이 가능하도록 설정합니다.
- 자식 클래스에서 부모 클래스의 메서드를 재정의할 때는 override 키워드를 사용합니다.
- 자식 클래스에서 재정의된 메서드 내에서는 base 키워드를 사용하여 부모 클래스의 메서드를 호출할 수 있습니다.
3. Overriding의 장점
- 다형성 구현: 부모 클래스의 참조 변수로 자식 클래스의 객체를 참조할 수 있으며, 이를 통해 다양한 자식 클래스의 객체를 동일한 방식으로 다룰 수 있습니다.
- 코드 재사용: 부모 클래스의 메서드를 자식 클래스에서 재정의하여 필요한 기능을 추가하거나 수정할 수 있습니다.
- 유지보수 용이성: 부모 클래스의 메서드를 수정하지 않고 자식 클래스에서만 수정하여 기능을 변경할 수 있습니다.
4. Overriding의 주의사항
- 메서드 시그니처: Overriding할 때는 부모 클래스의 메서드와 동일한 시그니처를 가져야 합니다.
- 접근 제한자: 자식 클래스에서 재정의된 메서드의 접근 제한자는 부모 클래스의 메서드보다 더 넓거나 같아야 합니다.
- base 키워드: 자식 클래스에서 재정의된 메서드 내에서 base 키워드를 사용하여 부모 클래스의 메서드를 호출할 수 있습니다.
간단 예제
using System;
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("The animal makes a sound");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("The dog barks");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("The cat meows");
}
}
class Program
{
static void Main(string[] args)
{
Animal animal = new Animal();
animal.MakeSound(); // Output: The animal makes a sound
Dog dog = new Dog();
dog.MakeSound(); // Output: The dog barks
Cat cat = new Cat();
cat.MakeSound(); // Output: The cat meows
}
}
C#의 Overriding에 대해 이해할 수 있을 것입니다. Overriding을 통해 다형성을 구현하고 코드 재사용성을 높여보세요.