007中詹姆斯邦德表面是温文尔雅的绅士,其实是隐藏身份的特工。
但是邦德出场的时,他需要隐藏身份,不暴露自己特工的身份。
因此他的Kill()方法不能随便暴露,只有总部统计特工时他才会被发现有特工的能力。
我们如果像平时一样定义詹姆斯邦德,那么就会暴露他的身份。
interface IGentleman
{
void Talk ();
}
interface IAgent
{
void Kill();
}
class JamesBond : IGentleman,IAgent
{
public void Talk()
{
Console.WriteLine("Kiss my ass.");
}
public void Kill()
{
Console.WriteLine("Go hell!");
}
}
这样定义是可以被发现Kill()方法暴露他身份的。
class Program
{
static void Main(string[] args)
{
JamesBond Jb = new JamesBond();
Jb.Talk();
Jb.Kill();
}
}
如何不随意的发现詹姆斯邦德的Kill()方法呢?
我们只需要这样改动。
原本是
public void Kill()
{
Console.WriteLine("Go hell!");
}
改为
void IAgent.Kill()
{
Console.WriteLine("Go hell!");
}
这样就可以只有在引用名为IAgent类时的引用名才可以调用到Kill()方法。
class Program
{
static void Main(string[] args)
{
var Jb = new JamesBond();
Jb.Talk();
IAgent Agent = new JamesBond();//或者IAgent Agent = Jb;
Agent.Kill();
}
}