Base의 메서드 직접 호출
OOP에서는 메서드 재정의를 위해 파생 클래스 내의 기본 클래스 메서드에 액세스하는 것이 필수적입니다. 그러나 "중간 재정의를 우회하여 기본 메서드를 어떻게 호출할 수 있습니까?"라는 질문이 생깁니다.
SpecialDerived 클래스에서 Derived.Say()에 대한 원치 않는 호출을 방지하려면 원본 소스 코드를 수정되었습니다. 그러나 해결 방법이 있습니다. Derived 클래스에 CustomSay()라는 새 메서드를 도입하고 SpecialDerived에서 이를 재정의함으로써 기존 Say() 메서드를 유지하면서 기본 동작을 리디렉션할 수 있습니다.
수정된 코드는 다음과 같습니다.
// Cannot change source code class Derived : Base { public override void Say() { CustomSay(); base.Say(); } protected virtual void CustomSay() { Console.WriteLine("Called from Derived."); } } class SpecialDerived : Derived { protected override void CustomSay() { Console.WriteLine("Called from Special Derived."); } }
이제 sd.Say()를 호출하면 결과는 다음과 같습니다. be:
Called from Special Derived. Called from Base.
새 메서드 CustomSay()를 사용하면 재정의된 Say() 메서드를 수정하지 않고도 사용자 정의가 가능합니다. 그러나 일반적으로 혼란과 유지 관리 문제가 발생할 수 있으므로 첫 번째 수준 이상의 기본 메서드에 액세스하는 것은 권장되지 않습니다.
위 내용은 중간 재정의를 우회하여 기본 클래스 메서드를 직접 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!