C# 接口应用及意义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 接口应用及意义相关的知识,希望对你有一定的参考价值。

写在前面:新手入行,读者勉强看看吧,写的不对的欢迎讨论,板砖轻拍!

一.定义

  接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员。

  通常用Interface关键字进行定义。

  接口内部只包含方法名,属性等,不含任何访问修饰符。

二.疑问

  很多像笔者这样的新手在看到接口的定义及作用后都会产生疑问:接口内部方法只有方法名我们何必去继承这个接口呢?完全可以在应用方法的类里写一个方法调用嘛,何必多此一举呢?

每个继承的类的方法内部代码依然也是不一样,继承时如果不写全继承的方法还会报错,还不如每个类自己写个方法解决呢。

  这个问题让我整整找了一天的答案,如下是笔者见解。

三.代码实例

   做个和银行存取款相关的实例,有这样三个银行:建行,工行,农行,有个公民同时有这三个银行的账号。

   先建个接口IBank

 public interface IBank
    {
        string Name { get; set; }
        int Count { get; set; }
        int InMoney(int money);
        int OutMoney(int money);
    }

   然后分别建立三个银行的类,继承自IBank

class ICBCBank:IBank
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int count;
        public int Count
        {
            get { return count; }
            set { count = value; }
        }
        public int InMoney(int money)
        {
            count += money;
            return count;
        }
        public int OutMoney(int money)
        {
            count -= money;
            return count;

        }
    }

  其他两个类似这个,就不写了。内部包含Name和Count两个属性与InMoney,OutMoney两个存取钱方法。

            IBank banker;
            banker = new ICBCBank { Name = "ICBCBank", Count = 100 };
            DrawMoney(banker);
            banker = new CCBBank { Name = "CCBBank", Count = 200 };
            DrawMoney(banker);
            banker = new ABCBank { Name = "ABCBank", Count = 300 };
            DrawMoney(banker);



 private void DrawMoney(IBank banker)
        {
            banker.OutMoney(10);
            text01.Text+=banker.Name+"  "+ banker.Count.ToString()+"\n";
        }   

  通过接口建立banker,该公民具有三个银行的账户,每次只要将其转换到某一银行去之后,即可对其在该银行内的账户进行取钱动作。

  在下面DrawMoney动作中,传入参数类型为IBook,可以传入任何银行的参数,大大方便的操作处理。

  假如该公民再有其他银行账户时,增加该银行类,继承IBank即可,改动很小。

 

以上是关于C# 接口应用及意义的主要内容,如果未能解决你的问题,请参考以下文章

C#程序员经常用到的10个实用代码片段 - 操作系统

C# 最有用的(自定义)代码片段是啥? [关闭]

c#代码片段快速构建代码

Flask 编写http接口api及接口自动化测试

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

C#常用代码片段备忘