首页 > 其他 > 详细

接口的显式实现

时间:2019-10-08 19:08:56      阅读:96      评论:0      收藏:0      [点我收藏+]

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();
        }
    }

接口的显式实现

原文:https://www.cnblogs.com/maomaodesu/p/11636466.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!