2012-01-12 4 views
0

(인터뷰 질문) 클래스에 구현 된 인터페이스의 예를들 수 있습니다.이 인터페이스는 암시 적 메서드를 호출 할 수 있지만 명시 적 메서드는 호출 할 수 없습니까?명시 적 인터페이스가 아니라 인터페이스 암시 적 메서드를 호출 할 수 있습니까? (Interview Quest! on)

+0

명시 적으로 인터페이스 메서드를 재정의 할 수없는 클래스를 의미합니까? – rerun

+0

인터페이스를 구현 한 클래스의 암시 적 및 명시 적 메서드는 무엇을 의미합니까? 공개 및 비공개와 같은 액세스 수정자를 의미합니까? – Mharlin

+0

@rerun Correct. – Idrees

답변

0

예 :

조립 1 :

internal interface IFlyable 
{ 
    void Fly(); 
} 

public class Bird: IFlyable 
{ 
    public void Fly() { ... } 
    void IFlyable.Fly() { ... } 
} 

조립 2 :

Bird bird = new Bird(); 
bird.Fly(); 
((IFlyable)bird).Fly() // Error, IFlyable is internal 

그것은 인터뷰 질문이었다. 당신이 그것에 대해 생각한다면 똑똑한 사람.

2
interface IA 
{ 
    void Method1(); 
    void Method2(); 
    void Method3(); 
} 

class A : IA 
{ 
    // Implicit implementation 
    public void Method1() 
    { 
    } 

    // Explicit implementation 
    void IA.Method2() 
    { 
    } 

    // Implicit + explicit implementation! 
    public void Method3() 
    { 
    } 

    void IA.Method3() 
    { 
    } 
} 

class TestImplicitExplicit 
{ 
    public void Test() 
    { 
     A a = new A(); 
     a.Method1(); // ok 
     //a.Method2(); // does not compile 
     a.Method3(); // ok 

     IA ia = a; 
     ia.Method1(); // ok 
     ia.Method2(); // ok 
     ia.Method3(); // ok (calls another method than a.Method3(); !) 
    } 
} 

명시 적 구현은 인터페이스를 통해서만 볼 수 있습니다.

+0

ia 또는 IA를 선언 할 때 여전히 Method2를 호출 할 수있었습니다. 그렇게 할 수 있습니까? 당신이 할 수없는 상황을 생각해 볼 수 있습니까? – Idrees

+0

항상 작동해야합니다. 이상하게도 동시에 같은 메소드를 명시 적으로 그리고 암시 적으로 구현할 수도 있습니다! –

+0

별로 ... 항상 – Idrees

관련 문제