黑马程序员 接口 总结

原创 2013年12月05日 20:08:04
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

1.C#中使用关键字interface来定义接口类型,其成员只能是一般方法声明、属性、事件和索引函数,而不能有字段和构造函数。接口声明访问修饰符和类一样,成员不允许有任何访问修饰符,默认为public,static也不行。

2.接口可继承,子接口可以包含与父接口相同的方法,但此时子接口的方法必须使用关键字new隐藏父接口的方法 ,面不能使用override修饰符来重载父接口的方法。接口这间的继承同样存在传递性。接口IB从接口IA派生,面接口IC又从IB派生,那么它也就间接地从IA派生,不过接口不能从类派生。

3.接口的实现,如果支持接口的类型是非抽象的,那么必须支持接口中的所有方法,并为这些方法提供具体实现;如果支持接口的类型是抽象类,那么它必须支持接口中所有方法,且这些方法要么提供具体实现,要么是抽象的。  静态类不能继承接口,实现的接口也不能声明为静态的

4.由于类可以实现任意数量的接口,有可能两个或多个接口成员都有相同的签名和返回类型,那么如果一个类实现了多个接口,那么其中一些接口有相同签名和返回类型的成员,类可以实现单个成员画满足所有包含重复成员的接口。还有实现接口的类可以从它的基类继承实现的代码。

5.通过公有成员方法来实现所支持的接口方法(接口方法声明默认是public),这叫作对接品方法的隐式实现,隐式实现,可以通过类的实例来进行方法调用,也可以隐匿转换为接口实例再进行方法调用, 成员方法可以使用abstract或virtual修饰符(表示允许派生类重载),但不能使用sealed和override修饰符。 在方法名这前加上接口名,这叫作对接口方法 的显示实现,此时方法不能使用任命修饰符,那么它实际上就是类的私有成员因此不能通过类的实例来访问,而是需要转换为接口实例才能访问。

6.如果有显式接口成员实现,类级别的实现是允许的,但不是必须的。显式实现满足了类或结构必须实现的方法。因此,我们有3种实现:级别实现;显示接口成员实现;类级别和显式接口成员实现。

7.利用接口来实现多太性,接口方法的隐式实现和显式实现可以并存,在这种情况下,显式实现的方法才是对接口方法的真正实现,面隐式实现的方法可以看作是对原接口方法的覆盖,此时通过接口实例调用的是显式实现的方法,而通过对象实例调用的则是隐式实现的方法。

8.C#语言中规定一个类只能有一个直接基类,但可以同时继承多个接口,这能够有效地弥补单在表达能力上的不足。接口这间的继续只是“契约”继承,不需要提供实现,当一个类支持多个接口时,它也只是实现各接口的“契约”服务,而不需要处理多重构造函数和重载方法等复杂情况,

9.和类这间的单继承不同,一个接口可以有多个父接口,此时在继承声明中父接口这间通过逗号分隔。一个类同样可以支持多个接口;如果同时存在类继承,那么继承声明中的基类应出现在所有接口之前。
 
10.接口与集合:.NET类库中与集合有关的接口类型
IEnumerable 支持foreach遍历的可枚举类型     IEnumerator 枚举器,提供对可枚举类型的遍历操作
 public interface ICollection : IEnumerable  //对象集合,定义所有非泛型集合的大小、枚举器和同步方法。
public interface IList: ICollection,IEnumerable//对象列表。支持对象的插入、删除和索引访问,表示可按照索引单独访问的对象的非泛型集合。     
public interface IDictionary : ICollection, IEnumerable //有字典(键值对)的集合  
public interface IDictionaryEnumerator : IEnumerator //有字典序的枚举器  
.NET类库中的主要集合类型
public class ArrayList : IList, ICollection, IEnumerable, ICloneable//使用大小可按需动态增加的数组实现 System.Collections.IList 接口
public class Queue : ICollection, IEnumerable, ICloneable //表示对象先进先出
public class Stack : ICollection, IEnumerable, ICloneable //表示对象的简单的后进先出非泛型集合   
 public class SortedList : IDictionary, ICollection, IEnumerable, ICloneable//表示键值对的集合,这些键值对按键排序并可按照键和索引访问                                                                                                                               

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

黑马程序员--一段给后者的面试总结

文章来源:黑马程序员, 北京之旅,行北京万事,通百姓生活。其实,我也是个农村出来的孩子,大学没毕业就来北京参加“黑马”,毕业之后,还是没有任何的机遇与机会让我能在那里一展雄威,这就是我们这些菜鸟的悲...
  • heima_hb6
  • heima_hb6
  • 2014年08月24日 13:51
  • 528

黑马程序员_java多线程的一些总结(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、    进程和线程 1、   进程和线程的关系。 一般来说,我们运行一个应用程序的,就启动...
  • u011449569
  • u011449569
  • 2015年10月29日 00:23
  • 287

黑马程序员_学习笔记JAVA基础总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!------- 1、方法重载 方法覆盖 重载:一个类中一种功能的多种实现方式,调用哪种实现...
  • qq_27123965
  • qq_27123965
  • 2015年04月19日 14:39
  • 399

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1527

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1556

黑马程序员—黑马的学习环境没有亲身经历的人是很难体会的!!!

文章来源:黑马程序员,黑马论坛     公元2013年1月10号我拖着沉重的行李箱和对未来的憧憬来到了黑马,公元2013年6月7号我怀抱着满满的知识和对老师的不舍离开了黑马。到现在离开黑马也有一个...
  • heima_28
  • heima_28
  • 2014年08月26日 15:16
  • 1420

黑马程序员--Oracle学习_day06

----------  android培训 、java培训、期待与您交流! ---------- 学习目标:1,理解oracle的pl/sql的概念   2,掌握pl/sql编程技术(...
  • xpaibeyond
  • xpaibeyond
  • 2015年01月16日 14:28
  • 204

黑马程序员—怎么去黑马?吃住问题解答

文章来源:黑马程序员,黑马论坛
  • heima_25
  • heima_25
  • 2014年08月24日 13:24
  • 1144

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2405

黑马程序员:Hibernate基础知识

android培训、java培训
  • u012159707
  • u012159707
  • 2013年09月26日 15:42
  • 587
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员 接口 总结
举报原因:
原因补充:

(最多只允许输入30个字)