首页 > 代码库 > 面向对象基础之抽象类与接口 下
面向对象基础之抽象类与接口 下
在上篇博文中我们一起了解了抽象类,那么什么是接口呢?下面给大家简单介绍一下:
所谓接口,就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式,因此接口不能实例化,不能有构造方法和字段,不能有修饰符,如public等。在实现接口的类中必须实现接口中的所有方法和属性。
一个接口可以支持多个接口,多个类也可以支持相同的接口。需要注意的是,接口用interface关键字来声明,而不是class,接口的名称前要加大写字母I,接口中的方法或者属性前面不能有修饰符,方法没有方法体。
那么在C#中,接口又是如何来定义声明呢?请往下看
Interface 接口名称
{
返回类型 方法名称(参数列表);
}
有人可能会觉得说了这么多,还是不明白抽象类和接口到底是什么关系,别担心,最后给大家总结一下,抽象类和接口的区别。
从表面上来讲,抽象类可以给出一些成员的实现,接口却不包含成员大的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类(C#没有多重继承),但是可以实现多个接口等等。具体的我们可以从三点去加以区分:
第一, 类是对对象的抽象,抽象类是对类的抽象,而接口是对行为的抽象;
第二, 如果行为跨越不同类的对象,可以使用接口,对于一些相似的类对象,用继承抽象类;
第三, 从设计角度讲,抽象类是从子类中发现了公共的东西,将其抽象出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法是如何实现并不知道,因此预先定义的。
以上就是对于抽象类和接口的总结和分析,个人在学习的时候,最大的顿悟就是原来接口就是对各种类的行为的抽象,这点一下点醒了我,之前的理解真的很不到位,只是从接口的形式上去认识它,认为它既是一组方法的集合,仅此而已。
当然这些都是从理论知识的角度去理解抽象类和接口的,在以后的学习过程中必将还会遇到他们,尤其是在做工程项目的时候,大量使用抽象类和接口,肯定会对他们有一个更加深刻的理解,学习是一个循序渐进的过程。