博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 接口应用及意义
阅读量:5060 次
发布时间:2019-06-12

本文共 1770 字,大约阅读时间需要 5 分钟。

 

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

一.定义

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

  通常用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()+
"\n"
;
       
}  

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

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

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

 

四.

转载于:https://www.cnblogs.com/xiaowie/p/9304323.html

你可能感兴趣的文章
万维网WWW详解
查看>>
MySQL数据库之DML(数据操作语言)
查看>>
(四)适配器Adapter
查看>>
PL/0编译器(java version)–PL0.java
查看>>
【栈】1353:表达式括号匹配(stack)
查看>>
SQLServer中文排序
查看>>
numpy笔记—np.squeeze用法
查看>>
ORACLE数据库的一些限制
查看>>
贪心EX
查看>>
elementUi模态框使用baiduMap错误记录
查看>>
jquery_mini_ui
查看>>
[性能调优]PeopleSoft Trace 分析工具 - TraceMagic
查看>>
java-Freemarker TemplateLoader实现模版
查看>>
【GitHub】常用命令
查看>>
FreeRTOS 临界段和开关中断
查看>>
JS初级-作用域
查看>>
LINUX - gcc
查看>>
【UOJ228】基础数据结构练习题(线段树)
查看>>
【CF995F】Cowmpany Cowmpensation(动态规划,拉格朗日插值)
查看>>
【CTS2019】随机立方体(容斥)
查看>>