c# 오버라이딩 예제

Skrevs fredagen den 2 augusti, 2019

C #에서 메서드 재정의의 간단한 예를 살펴보겠습니다. 이 예제에서는 키워드를 재정의하여 eat() 메서드를 재정의합니다. 이 예제에서는 Employee라는 기본 클래스와 SalesEmployee라는 파생 클래스를 정의합니다. SalesEmployee 클래스에는 추가 필드, 판매 보너스가 포함되며 이를 고려하기 위해 CalculatePay 메서드를 재정의합니다. C#에서 메서드 재정의는 C++의 가상 함수와 유사합니다. 메서드 재정의는 파생 클래스의 다른 클래스(기본 클래스)에서 함수를 호출할 수 있는 기술입니다. 기본 클래스의 메서드와 동일한 시그니처를 사용하여 파생 된 클래스에서 메서드를 만드는 방법을 메서드 재정의라고 합니다. 간단하게 말하면 재정의는 하위 클래스 또는 자식 클래스가 이미 슈퍼 클래스 또는 상위 클래스 중 하나에서 제공하는 메서드의 특정 구현을 제공할 수 있는 기능입니다. 하위 클래스의 메서드에 동일한 이름, 동일한 매개 변수 또는 서명 및 동일한 반환 형식(또는 하위 형식)이 해당 수퍼 클래스의 메서드와 같으면 하위 클래스의 메서드가 수퍼 클래스의 메서드를 재정의한다고 합니다. 메서드 재정의는 C#가 런타임 다형성(동적 다형성)을 달성하는 방법 중 하나입니다. 여기서 먼저, d는 derived_class 클래스의 객체를 참조하고, 그 다음에 는 클래스 derived_class의 gfg()를 호출하고, b는 클래스 베이스의 참조를 참조하고 유래된 클래스의 객체를 보유하고 유래된 클래스의 gfg()를 호출한다.

여기서 gfg() 메서드는 기본 클래스에서 파생 클래스의 메서드를 재정의하는 권한을 사용합니다. 여기서는 파생 클래스 DC의 개체를 만들고 참조를 BC 형식B의 참조 변수 b에 저장합니다. 이는 C#에서 유효합니다. 다음으로 참조 변수 b를 사용하여 디스플레이()를 호출합니다. b에는 DC 형식의 개체에 대한 참조가 포함되어 있기 때문에 클래스 DC의 디스플레이() 함수가 실행될 것으로 예상합니다. 그러나 그런 일은 일어나지 않습니다. 대신 실행되는 것은 BC 클래스의 Display()입니다. 이는 함수가 참조 변수 b가 참조하는 것이 아니라 참조 의 형식에 따라 호출되기 때문입니다. b는 BC 형식의 참조이므로 b가 누구를 가리키는지에 관계없이 클래스 BC의 함수 Display()가 호출됩니다. 한 가지 더 예를 들어 보겠습니다. C#에서 재정의하는 메서드는 C++의 가상 함수와 같은 기능입니다.

메서드 재정의는 기본 클래스 참조를 사용하여 상속계층의 동일한 계층 구조에 속하는 함수(동일한 서명이 있는 함수)를 호출할 수 있는 기능입니다.

Teater Kapija
Örmölla 321
SE-274 56 Abbekås

+46 (0)411 533 772
+46 (0)70 740 17 61

info@kapija.com
www.kapija.com