Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 델리게이트(Delegate)와 상속(Inheritance)의 개념 및 차이점 완벽 정리

C#에서의 델리게이트(Delegate)

델리게이트는 메서드에 대한 참조를 저장하는 참조 형식(reference type) 변수입니다. 가장 큰 특징은 런타임에 참조 대상인 메서드를 자유롭게 변경할 수 있다는 점으로, 이를 통해 코드의 유연성이 크게 향상됩니다.

델리게이트를 선언하는 기본 문법은 다음과 같습니다.

delegate <반환 타입> <델리게이트 이름> <매개변수 목록>

델리게이트는 런타임 유연성을 제공합니다. 즉, 프로그램 실행 중에도 참조하는 메서드를 손쉽게 교체할 수 있습니다. 또한 델리게이트로 생성한 인스턴스는 항상 알려진 클래스에 속하게 되므로 타입 안정성도 보장됩니다.

C#에서의 상속(Inheritance)

상속은 하나의 클래스를 다른 클래스를 기반으로 정의할 수 있게 해주는 객체 지향 프로그래밍의 핵심 개념입니다. 이를 활용하면 애플리케이션을 더 쉽게 생성하고 유지보수할 수 있습니다.

또한 상속은 코드 재사용성(code reusability)을 극대화하여 개발 시간을 단축시켜 줍니다. 새로운 클래스를 만들 때 데이터 멤버와 멤버 함수를 처음부터 다시 작성하는 대신, 기존 클래스의 멤버들을 그대로 물려받아 사용할 수 있습니다.

이때 멤버를 제공하는 기존 클래스를 기반 클래스(base class), 그리고 이를 상속받는 새로운 클래스를 파생 클래스(derived class)라고 부릅니다.

기반 클래스와 파생 클래스 선언 방법

C#에서 상속 관계를 정의하는 기본 문법은 다음과 같습니다.

<접근 한정자> class <기반 클래스> {
    ...
}
class <파생 클래스> : <기반 클래스> {
    ...
}

파생 클래스 이름 뒤에 콜론(:)을 붙이고 상속받을 기반 클래스를 지정하면, 기반 클래스의 public 및 protected 멤버를 모두 사용할 수 있습니다.

정리: 델리게이트와 상속의 차이

델리게이트는 메서드 자체를 참조하여 런타임에 동작을 교체할 수 있는 반면, 상속은 클래스 간의 계층 구조를 형성해 멤버를 물려받고 확장하는 데 사용됩니다. 두 개념은 서로 대체 관계가 아니라 목적이 다른 보완적인 도구이므로, 상황에 맞게 적절히 활용하는 것이 좋습니다.