在asp.net中什么是接口?

Xiao锺 2024-05-16 01:47:53
最佳回答
什么是接口?其实,接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,这就是接口的好处,但并不是所有的编程语言都支持接口,c#是支持接口的。注意,虽然在概念上,c#接口类似于com接口,但他们的底层结构是不同的。那么,我们来看一下如何声明和使用接口。 声明接口 声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账户的接口: public interface ibankaccount{ void payin(decimal amount); bool withdraw(decimal amount); decimal balance { get; }} 注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,最好让实现类来声明。 使用接口的例子 这是书上的一个简单的例子,但足以说明接口的使用方法。 一个银行账户的接口,两个不同银行账户的实现类,都继承于这个接口。接口声明如上。下面是两个账户类:class s**eraccount : ibankaccount{ private decimal balance; public decimal balance { get { return balance; } } public void payin(decimal amount) { balance += amount; } public bool withdraw(decimal amount) { if (balance >= amount) { balance -= amount; return true; } console.writeline("withdraw failed."); return false; } public override string tostring() { return string.format("venus bank s**er:balance={0,6:c}", balance); }}class goldaccount : ibankaccount{ private decimal balance; public decimal balance { get { return balance; } } public void payin(decimal amount) { balance += amount; } public bool withdraw(decimal amount) { if (balance >= amount) { balance -= amount; return true; } console.writeline("withdraw failed."); return false; } public override string tostring() { return string.format("jupiter bank s**er:balance={0,6:c}", balance); }} 可见,这两个实现类多继承了ibankaccount接口,因此它们必须要实现接口中的所有声明的方法。要不然,编译就会出错。让我们来测试一下,下面是测试代码:static void main(string[] args){ ibankaccount venusaccount = new s**eraccount(); ibankaccount jupiteraccount = new currentaccount(); venusaccount.payin(200); jupiteraccount.payin(500); console.writeline(venusaccount.tostring()); jupiteraccount.payin(400); jupiteraccount.withdraw(500); jupiteraccount.withdraw(100); console.writeline(jupiteraccount.tostring());} 请注意开头两句,我们把它们声明为ibankaccount引用的方式,而没有声明为类的引用,为什么呢?因为,这样我们就可以让它指向执行这个接口的任何类的实例了,比较灵活。但这也有个缺点,如果我们要执行不属于接口的方法,比如这里重载的tostring()方法,就要先把接口的引用强制转换成合适的类型了。 接口的继承 接口也可以彼此继承,就象类的继承一样。比如我们又声明一个接口itransferbankaccount,它继承于ibankaccount接口。interface itransferbankaccount : ibankaccount { bool transferto(ibankaccount destination, decimal amount);} 在这个接口中,又新增加了一个方法transferto(),所以如果我们要写一个类从itransferbankaccount继承的话,就必须要实现ibankaccount和itransferbankaccount两个接口所有的方法声明。即:class currentaccount : itransferbankaccount{ private decimal balance; public decimal balance { get { return balance; } } public void payin(decimal amount) { balance += amount; } public bool withdraw(decimal amount) { if (balance >= amount) { balance -= amount; return true; } console.writeline("withdraw failed."); return false; } public override string tostring() { return string.format("jupiter bank s**er:balance={0,6:c}", balance); } public bool transferto(ibankaccount destination, decimal amount) { if (withdraw(amount)) { destination.payin(amount); return true; } else { return false; } }} 总结起来说,使用c#接口应注意几个问题: 1、c#中的接口是独立于类来定义的。这与 c++模型是对立的,在 c++中接口实际上就是抽象基类。 2、接口和类都可以继承多个接口。 3、类可以继承一个基类,接口根本不能继承类。这种模型避免了 c++的多继承问题,c++中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式作用域这类复杂机制。c#的简化接口模型有助于加快应用程序的开发。 4、一个接口定义一个只有抽象成员的引用类型。c#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。 5、接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。 20210311
汇率兑换计算器

类似问答
  • 电源上的 d型4pin接口,是接什么的?
    • 2024-05-16 18:26:16
    • 提问者: 未知
    各种ide标准都能很好的向下兼容,例如ata 133兼容ata 66/100和ultra dma33,而ata 100也兼容ultra dma 33/66。要特别注意的是,对ata 66以及以上的ide接口传输标准而言,...
  • 互联网接入口指的是什么
    • 2024-05-16 12:21:40
    • 提问者: 未知
    移动接入点是wap 这样省流量 联接入点也是wap , 这样比较省流量 其个都是一样的 也可net接入点 , 但是net比较费流量的 虽然运营商不一样 ,但是接入点是一样的 (也要根据手机设置 、 但是接入点一样)
  • asp的asp.net有什么区别?
    • 2024-05-16 14:39:56
    • 提问者: 未知
    asp与 的联系和主要区别?asp.net与现存的asp保持语法兼容,实际上我们可将现有的asp源码文件扩展名“.asp”改为“.aspx”,然后配置在支持asp.net运行时的i**服务器的web...
  • 关于asp.net
    • 2024-05-16 04:10:29
    • 提问者: 未知
    找一个下载来安装。http://www.red-gate.com/**board/viewtopic.php?t=5367
  • 卡农接口是什么?
    • 2024-05-16 09:57:15
    • 提问者: 未知
    卡农接口是卡侬头,是一2113种音频接头。卡侬连接插件是5261专业音响4102系统中使用最广泛的一类接插件,可用1653于传输音响系统中的各类音频信号,一般平衡式输入、输出端子都是使用卡侬接插件来连接的。在某种意义上说,使用卡侬接插件也是专业音响系统有别于民用音响的特征之一,其好处是...
  • pci接口卡的作用是什么?
    • 2024-05-16 16:37:15
    • 提问者: 未知
    pci接口卡的作用:是一种添加或增强电脑特性及功能的方法。例如,不满意主板整合显卡的性能,可以添加独立显卡以增强显示性能;不满意板载声卡的音质,可以添加独立声卡以增强音效;不支持u**2.0或ieee1394的主板可以通过添加相应的u**2.0扩展卡或ieee1394扩展卡以获得该功能等。目前扩展插槽...
  • webservice接口是什么?
    • 2024-05-16 02:58:37
    • 提问者: 未知
    web 是使应用程序可e68a84e8a2ad3231313335323631343130323136353331333431366263以与**和编程语言无关的方式进行相互通信的一项技术。web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 xml 消息传递访问的操作。它使用基于 xml 语言的协议来描述要执行的操作或者要与另一个 ...
  • webservice接口是什么?
    • 2024-05-16 23:39:06
    • 提问者: 未知
    webservice接口是一种常用的**发提交接口,使用时可以象调用一般函数一样调用webservice的方法。作用是:该接口主要用于客户自身的软件、网站或其他产品,需要将**发功能集成于软件、网站内作为产品整体功能的一部分,在这种情况下可以使用webservice接口来提交短信。实现webservice接口的短信...
  • vga接口和hdmi接口有什么区别
    • 2024-05-16 14:45:40
    • 提问者: 未知
    一、主2113体不同 1、vga接口:是ibm于1987年提出的一5261个使用模拟信号的电脑显4102示标准。2、hdmi接口:是一种全1653数字化视频和声音发送接口。二、接口不同 1、vga接口:接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。2、hdmi接口:...
  • hdmi接口和d**playport接口的区别是什么?
    • 2024-05-16 15:10:57
    • 提问者: 未知
    我来告诉你,hdmi与d**playport谁更胜一筹?vga接口逐渐被淘汰迎来了dp与hdmi两个多媒体高清晰度数字显示接口,电脑显卡上也是被这两个高清晰度数字显示接口逐渐占领上风,大众的消费类也是对这两个接口爱上加爱。高清接口的出现受到大众的喜爱与青睐,让更多的商家找到契机,研发与生产hdmi高清技术产品和数码产品。hdmi接口与d**playport接口都这么受欢迎,那要比较起来谁更胜一筹?...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。