C#基础才是重中之重~为啥C#有显示达成接口

回去目录

问题很有意思,在C#世界里,有一种达成叫做“突显完毕”,它说的骨子里是对接口的贯彻格局,一般地,大家用到的落到实处都是隐示完毕(VS里叫做完结接口)

C# 1

为什么大家从不用过“显示实现接口”呢?当类只持续一个接口时,显式达成接口与落实接口(小编习惯称它为隐示实现)没有区分,若是你非要找个区分,那就是显得接口后,全部接口方法都必须是public,而“展现完毕接口“则对类来说不是public,若是你必要动用接口方法时,在注解对象时,必须使用接口作评释,而倘使应用“隐示落成接口”,则使用类大概接口作表明都以能够的。

例如:

展现实现接口,只可以利用接口作注脚,假如运用类作评释,那么接口中的方法由于在类中不是public,所以对外边是不可见的

C# 2

隐示完结接口,能够应用类如故接口举行对象注解

C# 3

书规正传,说说为啥C#有展现完结接口吧,其实在于JAVA来说,它并不提供展示实现接口,而且JAVA在面向对象上还有很多不或许与C#相比的地方,我们随着本人对学识的深刻,会更有认知,千万不要听JAVA人的单向之词。

对于2个接口来说,它被认识是一种行为规范,例如,三个华夏人与法国人的行为规范,它只怕有3个一致的格局叫Compute_Wage,即“总计薪资”,它在对人(people)的落到实处上是差异的,因为在U.S.A.,人们的福利会更好有的,而在中中原人民共和国,苦B的人们要交种种税收,无语!

代码就像下:

    /// <summary>
    /// 在美国
    /// </summary>
    interface IUsaAccount
    {
        /// <summary>
        /// 计算工资
        /// </summary>
        void Compute_Wage();
    }
    /// <summary>
    /// 在中国
    /// </summary>
    interface IChinaAccount
    {
        /// <summary>
        /// 计算工资
        /// </summary>
        void Compute_Wage();
    }

而对于1个People来说,它无所语是中夏族依然法国人,总而言之笔者要去落到实处您的法门,中中原人民共和国人完毕中夏族民共和国的准则,英国人实现美利坚同盟国的轨道,当然,要是你未曾点名是中

国人依旧英国人,那小编正是联合的轨道。

代码就像是下了:

   /// <summary>
    /// 苦B人类
    /// </summary>
    public class People : IUsaAccount, IChinaAccount
    {
        public People(string name, decimal salary)
        {
            this.Name = name;
            this.Salary = salary;
        }

        #region Properties
        public string Name { get; set; }
        public decimal Salary { get; set; }
        #endregion

        #region 隐示实现接口
        public void Compute_Wage()
        {
            Console.WriteLine("统一了,{0}它无论在哪个国家,工资都是{1}", Name, Salary);
        }
        #endregion

        #region 显示实现接口
        #region IUsaAccount 成员

        void IUsaAccount.Compute_Wage()
        {
            Console.WriteLine("在美国,{0}的工资是(原工资{1}*12%的福利){2}", Name, Salary, Salary * 1.2m);
        }

        #endregion

        #region IChinaAccount 成员

        void IChinaAccount.Compute_Wage()
        {
            Console.WriteLine("在中国,{0}的工资是(原工资{1}-原工资{1}*2%的个税){2}", Name, Salary, Salary - Salary * 0.02m);
        }
        #endregion


        #endregion
    }

而此时,二个People对象,将会有八个Compute_Wage方法,它们依照你的People对象注脚不一致,有二种不一致的图景,看一下证明对象的代码:

            IUsaAccount person1 = new People("zzl", 5000);
            person1.Compute_Wage();

            IChinaAccount person2 = new People("zzl", 5000);
            person2.Compute_Wage();

            People person3 = new People("zzl", 5000);
            person3.Compute_Wage();

而程序运营的结果,应该是大家得以认识到的:

如图:

C# 4

看完那篇作品,相信大家对“完毕接口”有了崭新的认识吧,在事实上开发中,假使您强调“面向接口编制程序”,能够每一遍都“展现完成接口”,那样能够确认保障您的指标总要为接口实行宣示。

重回目录

相关文章