(面试问题) 你能给我一个在类中实现的接口的例子,你可以在其中调用它的隐式方法而不是显式方法吗?
答案 0 :(得分: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(); !)
}
}
只能通过界面看到显式实现。
答案 1 :(得分: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
这是一个面试问题。如果你考虑它就会很聪明。