C#의 가상/재정의 및 새 키워드 : 방법을 다시 작성하기 위해 어떤 키워드를 사용해야합니까?
기본 클래스에서 메소드를 정의 할 때 프로그래머는 종종 "가상"또는 "새로운"키워드를 사용할지 여부에 직면합니다. 이 결정은 파생 클래스에서 방법 재 작성의 동작에 큰 영향을 미칩니다.
Virtual Override
기본 클래스 메소드의 "Virtual"키워드를 사용하여 파생 클래스에서 재정의 할 수 있음을 나타냅니다. 메소드를 무시하려면 파생 클래스는 "재정의"키워드를 사용해야합니다. 이를 통해 재정의 방법이 예상대로 작동하여 상속 계층과 다형성을 유지합니다.
파생 클래스가 다시 작성된 메소드를 호출하면 객체를 고정하는 참조 변수가 기본 클래스 유형이더라도 재정의 버전을 수행합니다. 이를 늦은 바인딩이라고하며 동적 행동을 허용합니다.
새로운 키워드
대신, 파생 클래스 메소드의 "새로운"키워드는 동일한 이름으로 상속 된 메소드를 숨기는 새로운 메소드를 선언합니다. 사용될 때, 새로운 방법은 파생 클래스에서 상속 된 방법을 대체하여 다형성을 파괴합니다.
파생 클래스가 "new"로 선언 된 메소드를 호출하면 객체를 보유하는 참조 변수의 유형에 관계없이 새로운 메소드를 실행합니다. 이것은 초기 결합으로 간주되며 다형성을 방해합니다.
예
다음 코드 예를 고려하십시오.
public class Base
{
public virtual bool DoSomething() { return false; }
}
public class Derived : Base
{
public new bool DoSomething() { return true; }
}
파생 된 인스턴스를 유형 기반에 할당하고 dosomething ()을 호출하면 가상/재정의를 사용하면 결과가 거짓이되지만 새로 사용하면 결과가 사실이됩니다. 이것은 늦은 바인딩과 초기 결합의 차이를 강조합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3