亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

C#基礎教程:接口

標簽:
C#

首先,在C#中,一个类仅可以继承于一个基类(可以是抽象类,也可以是普通的非密封类),但是它可以实现多个接口。因此,当某个类需要同时拥有多种不同的操作时,封装这些操作的类型就不得不被定义为接口。例如,“学生”实体本身可以根据年龄来比较大小,同时它作为一种实体,还需要能够被序列化/反序列化。此时,我们可以让学生实体同时实现ISerializable和IComparable接口以达到这样的效果。严格的来说,并非所有实体都具有可比性,但从技术角度来讲,实体都应该具备序列化/反序列化的能力。因此在这里的案例中,我们应该定义一个IEntity的接口,使其实现ISerializable接口,然后再让学生实体同时实现IEntity和IComparable接口。

其次,基类可以定义更多的信息,当相似种类的对象有着共同的操作和/或属性时,基类可以提供一个默认值,而子类则可以根据需要来选择是否重载/重写这些默认值。这一点对于接口来说是无法办到的。比如上文中我们给电池的正负极一个默认值,直到最后定义“标准镍氢电池”时,我们仍然没有去重载这个值,而是一直沿用了定义在基类中的默认值,这在代码重用上有着重要的意义。不仅如此,当我们修改了基类中某个成员的默认值时,所有继承于该类的子类,如果没有重载这个成员的话,那么它们中相应成员的取值也会随之变化,而这一变化并不需要对子类进行重新编译。

 

再次,由于值类型都是继承于ValueType,因此,无法再让值类型继承于其它类型,但值类型可以实现多个接口。当某一操作集合需要应用在值类型上时,只能将其封装到接口。

 

至此,基本上对抽象类与接口的使用做了全面的讨论,事实上也并没有一个严格的标准去区分什么时候用抽象类、什么时候用接口。我想,最关键也是最主要的依据仍然是前面一篇文章中所提到的,使用面向对象的语义去区分,而这就需要长期不断的经验积累,才能做出更加准确的理解与判断。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消