2017-02-09 1 views
-1

은 내가 인터페이스전화는

interface ISampleInterface 
{ 
    void SampleMethod(); 
} 

public class ImplementationClass : ISampleInterface 
{ 
    // Explicit interface member implementation: 
    public virtual void SampleMethod() 
    { 
     Console.WriteLine("Base"); 
    } 
} 
public class derived : ImplementationClass 
{ 
    public override void SampleMethod() 
    { 
     Console.WriteLine("child"); 
    } 
} 

가 지금은 사용자가 파생 만드는 경우 파생 클래스에서 SampleMethod를 호출 할 인터페이스에서 상속 된 클래스가 존재한다 클래스가 아닌 경우 기본 클래스 인 ImplementationClass에서 호출합니다. 기본적으로 런타임에 날씨 클래스를 파생 클래스로 결정해야합니다. 예를 들어 SampleMethod 구현과 함께 존재하고 다른 호출은로 전화하십시오..

+7

개체가'derived' 인스턴스 인 경우'SampleMethod'를 호출하면'derived'에서 해당 개체를 호출합니다. 코드에서 현재 수행하지 않는 작업을 명확하게 설명해 주시겠습니까? –

+0

또한 "명시 적 인터페이스 멤버 구현"이라고 말한 메모로서 실제로 암시 적으로 구현했습니다. – Chris

+0

Derived 클래스에서 SampleMethod를 호출하려고합니다. 파생 클래스가 다른 모듈에 의해 작성되었으므로 파생 클래스가 존재하는지 날씨를 확인해야합니다. 호출 파생 된 메서드가있는 경우 기본 마스트를 호출합니다. –

답변

1

은 내가, 내가 파생 된 클래스가 존재 여부는 통화 파생 방법 다른 통화 기반이

을 mathod 존재하는 경우 날씨 확인해야 파생 클래스에서 SampleMethod 전화를 원하지만 파생 된 클래스는 다른 모듈에 의해 생성된다

질문에 대한 의견에 따라이 코드는 이미 설명한대로 작동합니다. 다형성 때문에 작성된 개체가 가장 관련성이 높은 메서드라고합니다.

귀하의 경우에는 기본 메소드의 가상 메소드를 대체하므로 호출 할 메소드가됩니다.

+0

OP, * "확인해야합니다"* - 아니요, 간단히 메소드를 호출 할 필요가 없습니다.'virtual' +'override'가 나머지를 처리합니다. – Sinatr