![]() |
#2
hebingbing2008-05-17 11:16
接口的概念:接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。
其实我认为概念是在自己正真用它的时候才能够彻底理解的,光看上面的概念即使是你倒背如流我也认为你不理解接口是什么东西。 其实接口就是一个类,我们可以认为它就是用interface代替了class的一个类,所以他的声明语法都是和类一样的。但是它是一个特殊的类,特殊之处就在它只声明成员,而不具体实现。所以不能创建这个类(接口)的对象。而继承自接口的类必须实现接口的所有方法。 呵呵…… 是不是感觉在说抽象类啊? 是的,这看起来有点像抽象类,抽象类也不能实例化,而且要求派生类实现其抽象方法。但是两者是有区别的。 抽象类的功能要比接口多,抽象类可以有子类继承,而且可以包含状态数据和具体方法。 那么到底是用接口还是用类,就个人经验来说: (只是自己的经验奥,所以大家可以指点和补充……呵呵……) 决定因素:类型与其继承子类之间的关系。 接口:为类定义一种行为,即它“能干什么”,内置的.net ICloneable接口就是这样一个例子。它允许对象创建自身的副本 类:当继承子类是“一种”基类时,就应该用类, 例如:可以创建一个shape类做为基类,创建circle做为shape的子类,而将改变形状大小的功能做为一个接口方法。 除了作用不同外,类和接口还有许多不同。 [*]接口不能从类继承。而类是可以的…… [*]接口可以继承多个接口,而类是不可以的,大家都知道c#是不支持多继承的,它不和c++一样,这是因为它不支持多继承,而可以继承自多个接口,所以接口的概念在c#中就要比c++中要觉得重要一些…… [*]类可以继承多个接口,但是只能继承一个类…… [*]接口成员必须是方法,成员属性,事件或索引器。 [*]所有接口成员必须能public访问 [*]根据命名约定,接口名必须以大写I开头 本来想举个例子,编个小的程序的,呵呵…… 可是偷点懒了…… lz可以到网上去找找,应该很多的,我这里就不给你写了,其实写也是复制粘贴的,我实在是自己不想写了…… 其实个人觉得在系统的整个设计中,真正的问题不是选择类还是接口,而是然后最佳的结合使用类和接口,c#不允许多重继承,这使得接口的用途更广,倘若把所需的全部功能过呢都加载到一个基类中,或者建立基类的层次体系来实现所需的全部功能,就实在太费劲了。 更好的解决方法是定义一个基类,然后增加相应的接口来扩展其功能,这样,开发人员就可以直接使用类,而无需考虑方法是否为接口实现(即对接口中方法的具体实现)、另外,开发人员也可以只利用接口,而忽略其他类成员。 当然,你必须认识到使用接口的不足之处,首先设计良好的基类可以提升代码重用性,从而减轻继承子类的实现负担,另外,非抽象类可以增加成员,而不影响已有的派生类,而向接口增加成员的话,则实现该类的所有类都会受到影响。 ……………… 也就这么多吧…… 要是有什么不足地方大家补补…… |
在编程中有"接口"的概念,请问什么是接口,为什么使用要接口,平常的方法不能解决问题,一定要使用接口吗?什么地方需要用到接口,能不能提供一些使用接口的简单实例吗,然后说一说接口能解决什么具体问题?谢谢!
如果哪位能提供"FIF"小组的有关了的VIP FLASH视频下载吗?