谁能告诉我接口的好处 我是个新手,,,谁能告诉我接口的好处。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 继承是IS-A的关系;接口是CAN-DO Relationship,就是能实现这些功能. 接口----接口定义了一组方法(Method,子程序或函数例程[译注:指Visual Basic .NET中的Sub和Function])、属性(Property)、事件(Event)和域(Field,变量或特性),这些都被声明为公有。接口也可以被另一个接口继承。任何继承了一个接口的类或结构都必须实现接口继承链中所有接口所定义的成员。继承------继承是指一个类——称为子类[译注:亦称派生类],可以基于另一个类——称为基类[译注:亦称父类、超类]。继承提供了一种建立对象层次的机制。继承使得你能够在你自己的类中使用另外一个类的接口和代码。base->访问基类的成员。this->引用调用一个方法的当前对象。抽象类-------抽象类是一种特殊的基类。除了通常的类成员,它们还带有抽象类成员。抽象类成员是指没有实现而只有声明的方法和属性。所有直接从抽象类派生的类都必须实现所有这些抽象方法和属性。抽象方法不能实例化。这样做[译注:指实例化一个抽象类]是不合逻辑的,因为那些抽象成员没有实现。那么,不能实例化一个类有什么好处呢?很多!抽象类稳坐类继承树的顶端。它们确定了类的结构和代码的意图。用它们可以得到更易搭建的框架。这是可能的,因为抽象类具有这个框架中所有基类的一般信息和行为。接口和抽象类之间的区别--------接口和抽象类关系很紧密,它们都具有对成员的抽象。对于一个抽象类,至少一个方法是抽象方法既可,这意味着它也可以具有具体方法[译注:Concrete Method,这只是相对于抽象方法而言,面向对象中并没有这个概念]。对于一个接口,所有的方法必须都是抽象的。实现了一个接口的类必须为接口中的所有方法提供具体的实现,否则只能声明为抽象类。在C#中,多重继承(Multiple Inheritance)只能通过实现多个接口得到。抽象类只能单继承[译注:C#中的单继承是指所有类作为基类的时候都只能是派生类声明中唯一的基类,而不仅仅是抽象类]。接口定义的是一个契约,其中只能包含四种实体,即方法、属性、事件和索引器。因此接口不能包含常数(Constant)、域、操作符、构造器、析构器、静态构造器或类型[译注:指嵌套的类型]。同时,一个接口还不能包含任何类型的静态成员。修饰符abstract、public、protected、internal、private、virtual、override都是不允许出现的,因为它们在这种环境中是没有意义的。类中实现的接口成员必须具有公有的可访问性。 比如,同样是Employee,Managaer就应该继承Employee,因为Manager也是一个Employee。但是,一些Manager才能完成的操作,比如Hire/Fire操作,就应该是接口... http://www.zhanso.com/html/200684/7484.htm 记得一个同学是这样教我理解的类是一种东西的总称。比如说杯子吧:)我们可以有装水的杯子,装咖啡的杯子(这种杯子会有自己的特性,比如说有耳朵:) )但是他们都是杯子,这是类的继承的理解但是接口就不一样了接口不是具体的东西,它代表一种功能,这也是为什么总是有什么Ixxxable的原因比如说能够装水(IContainable)如果你的东西(类)要想具有某种功能,那么你就要实现接口了(实现功能)“Cup:IContainable”,这样程序上实现了你的杯子可以装水了:)通过杯子实现了IContainable接口,知道杯子可以装水(比如说“策略模式”就是基于此)但是杯子具体怎么装水,是杯子自己的事情了,要杯子自己去实现因此接口定义一种规则:)只要遵守规则就知道你的功能当然不仅仅是杯子可以装水,其他东西一样可以装水(池塘,水缸...)杯子也可以有其他的功能(比如说敲人IKickable:P),因此接口的多继承是很合理的"Cup:IContainable,IKickable"总之:接口是功能通过规则的体现。接口十分重要,有很多关于接口模式------------------------------------------- -_-"----这只是我对接口的理解个人意见,只做参考,可能有不妥的地方要深入了解,建议还是好好的温书:) 如何做到在序列化XML时标记一个成员变量,在反序列化时能够发现这个被标记的成员变量? WPF控件绑定数据库内数据 C#类继承问题. 在wpf中怎么使用cookie 关于枚举的问题 怎么样用用XmlWriterTraceListener加跟踪侦听器 求助:vs2005调试问题. Win Form中图片叠加问题? 高分求Kaspersky Anti-Virus for NT Server 4.5的key winform中,请问webrequest怎么请求https类的地址 怎么用C#判断Email是否存在 动态改变IE代理服务器地址 顶者有分
接口是CAN-DO Relationship,就是能实现这些功能.
继承------继承是指一个类——称为子类[译注:亦称派生类],可以基于另一个类——称为基类[译注:亦称父类、超类]。继承提供了一种建立对象层次的机制。继承使得你能够在你自己的类中使用另外一个类的接口和代码。
base->访问基类的成员。
this->引用调用一个方法的当前对象。抽象类-------抽象类是一种特殊的基类。除了通常的类成员,它们还带有抽象类成员。抽象类成员是指没有实现而只有声明的方法和属性。所有直接从抽象类派生的类都必须实现所有这些抽象方法和属性。
抽象方法不能实例化。这样做[译注:指实例化一个抽象类]是不合逻辑的,因为那些抽象成员没有实现。那么,不能实例化一个类有什么好处呢?很多!抽象类稳坐类继承树的顶端。它们确定了类的结构和代码的意图。用它们可以得到更易搭建的框架。这是可能的,因为抽象类具有这个框架中所有基类的一般信息和行为。
接口和抽象类之间的区别--------接口和抽象类关系很紧密,它们都具有对成员的抽象。
对于一个抽象类,至少一个方法是抽象方法既可,这意味着它也可以具有具体方法[译注:Concrete Method,这只是相对于抽象方法而言,面向对象中并没有这个概念]。
对于一个接口,所有的方法必须都是抽象的。
实现了一个接口的类必须为接口中的所有方法提供具体的实现,否则只能声明为抽象类。
在C#中,多重继承(Multiple Inheritance)只能通过实现多个接口得到。抽象类只能单继承[译注:C#中的单继承是指所有类作为基类的时候都只能是派生类声明中唯一的基类,而不仅仅是抽象类]。
接口定义的是一个契约,其中只能包含四种实体,即方法、属性、事件和索引器。因此接口不能包含常数(Constant)、域、操作符、构造器、析构器、静态构造器或类型[译注:指嵌套的类型]。
同时,一个接口还不能包含任何类型的静态成员。修饰符abstract、public、protected、internal、private、virtual、override都是不允许出现的,因为它们在这种环境中是没有意义的。
类中实现的接口成员必须具有公有的可访问性。
我们可以有装水的杯子,装咖啡的杯子(这种杯子会有自己的特性,比如说有耳朵:) )
但是他们都是杯子,这是类的继承的理解但是接口就不一样了
接口不是具体的东西,它代表一种功能,这也是为什么总是有什么Ixxxable的原因
比如说能够装水(IContainable)
如果你的东西(类)要想具有某种功能,那么你就要实现接口了(实现功能)
“Cup:IContainable”,这样程序上实现了你的杯子可以装水了:)
通过杯子实现了IContainable接口,知道杯子可以装水(比如说“策略模式”就是基于此)
但是杯子具体怎么装水,是杯子自己的事情了,要杯子自己去实现
因此接口定义一种规则:)只要遵守规则就知道你的功能
当然不仅仅是杯子可以装水,其他东西一样可以装水(池塘,水缸...)
杯子也可以有其他的功能(比如说敲人IKickable:P),因此接口的多继承是很合理的
"Cup:IContainable,IKickable"总之:接口是功能通过规则的体现。接口十分重要,有很多关于接口模式------------------------------------------- -_-"----
这只是我对接口的理解
个人意见,只做参考,可能有不妥的地方
要深入了解,建议还是好好的温书:)