zoukankan      html  css  js  c++  java
  • 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两个存取钱方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
               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()+" ";
           }  

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

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

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

    四.实例下载

  • 相关阅读:
    git的使用
    本体建模
    word2vec改进之Negative Sampling
    word2vec改进之Hierarchical Softmax
    word2vec原理
    Window下mysql的安装
    PageRank算法
    集成学习-------简单介绍
    自我介绍
    Apollo学习笔记(二):循迹实现过程
  • 原文地址:https://www.cnblogs.com/xiaowie/p/9304323.html
Copyright © 2011-2022 走看看