>백엔드 개발 >C++ >C# 상속에서 그림자와 재정의의 차이점은 무엇입니까?

C# 상속에서 그림자와 재정의의 차이점은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-28 14:11:39311검색

c# 상속 된 그림자 및 위임 차별 설명 상속 메커니즘에서 프로그래머는 두 가지 매우 다른 기술, 즉 그림자 (숨겨진)와 재정의를 겪게됩니다. 상속을 효과적으로 사용하려면 둘 사이의 미묘한 차이를 이해하는 것이 필수적입니다. What's the Difference Between Shadowing and Overriding in C# Inheritance?
하위 클래스 문에서 메소드가 발생하면 기본 클래스에 정의 된 메소드는 동일한 이름, 리턴 유형 및 매개 변수 목록을 갖습니다. 다시 작성하면 기본 클래스 메소드의 사용자 정의 구현이 가능합니다. 하위 클래스 객체가 다시 쓰기 메소드를 호출하면 서브 클래스의 코드는 기본 클래스 방법의 동작을 효과적으로 포괄합니다.

대조적으로,

Shadowing

서브 클래스 문에서 메소드가 발생하면이 메소드의 메소드는 기본 클래스의 메소드와 동일한 이름을 가지지 만 메소드 서명 (반환 유형 또는 매개 변수 목록). 다른. 서브 클래스에 새 메소드가 숨겨져 있으며,이 메소드는 기본 클래스에서 동일한 이름으로 대체됩니다. 서브 클래스 객체의 숨겨진 메소드를 호출하여 서브 클래스에서 코드를 수행하여 기본 방법을 효과적으로 숨 깁니다.

다음 예를 고려하십시오

클래스 A와 B의 객체에서 메소드를 호출 할 때 예상 출력은 다음과 같습니다.

주요 차이점은 B 객체를 객체로 변환 할 때입니다. 숨겨진 방법 (foo)의 경우 기본 클래스의 실현을 호출하십시오. 다시 쓰기 메소드 (BAR)의 경우 서브 클래스의 구현을 호출하십시오.

HIDDEN (Shadowing) 기본 메소드가 고려되지 않은 코드에 종속되면 문제가있을 수 있습니다. 우발적 인 행동을 일으키고 디버깅이 어려울 수 있습니다. 반면에 재정의 는 상속 구조를 유지하면서 구현 방법을 수정하는 제어 메커니즘을 제공합니다.

위 내용은 C# 상속에서 그림자와 재정의의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.