💡 1. Event 개요 바인딩
📄 0. 용어정리
0). 가상함수
가상함수는 수퍼클래스를 상속하는 서브클래스에서 Override(함수 재정의) 할 것으로 기대하고 정의해놓은 함수다.
① 특징?
- Virtual 예약어를 사용해 함수 앞에 붙여서 생성할 수 있다. 다르게 말하면 Override되려면 Virtual 키워드가 붙여져 있어야 한다.
class SuperClass { public virtual void Method(){Console.WriteLine("저는 부모클래스 메소드입니다.");} } class SubClass : SuperClass { public override void Method(){Console.WriteLine("저는 자식클래스 메소드입니다.");} }
- 런타임에 함수포인트 값이 정의 된다. 즉, 동적 바인딩 되는 함수다.
- 동적 바인딩(런타임에 함수가 정해진다.) 으로 함수의 다형성을 구현할 수 있다.
1). 함수의 바인딩
함수를 만들어 컴파일 하면, 각각의 코드가 메모리 어딘가에 저장된다.
그리고 함수를 호출하는 부분에서 그 메모리가 저장된 함수 포인터를 참조한다.
프로그램 실행 -> 함수 호출 -> 함수가 저장된 주소로 점프 -> 함수 실행 -> 원래 위치로
함수의 호출부와 정의부를 연결시켜주는 것이 바인딩 이라고 할 수 있다.
2). 정적 바인딩 & 동적 바인딩
① 정적 바인딩
컴파일 타임에 호출될 함수가 결정되는것이다.
일반적으로 함수는 정적 바인딩이다.
② 동적 바인딩
런타임에 호출될 함수가 결정되는 것
함수가 가상함수로 선언이 되면 포인터 변수가 실제로 가르키는 객체에 따라 호출 대상이 결정된다.
동적 바인딩을 하게된다면 컴파일 당시 호출될 함수의 메모리 포인터가 미리 결정되는것이 아니라 런타임 중 함수가 결정된다.
참조
'Language > C#' 카테고리의 다른 글
| 니앙팽이 - 이벤트(C#) | 4 | Eventhandler & Event & EventArgs (0) | 2023.02.09 |
---|---|
| 니앙팽이 - 이벤트(C#) | 3 | 델리게이트 액션 (Action) (0) | 2023.02.03 |
| 니앙팽이 - 이벤트(C#) | 2 | 델리게이트(Delegate) (0) | 2023.02.03 |
| 니앙팽이 - 이벤트(C#) | 0 | 이벤트 지향 개발 (0) | 2023.02.03 |
| 니앙팽이 - C# | 1 | 어셈블리(Assembly) (0) | 2023.02.01 |