1、为什么会有接口和抽象类?
从语言设计的角度考虑,为什么需要有接口和抽象类?
(1)对事物进行抽象得到类,对普通类的操作得到了基础的封装和继承功能。
(2)进一步审查这些类,如果发现:父类知道子类一定要完成某个功能,但是每个子类完成的情况是不一样的。子类以后也只会用自己重写的功能,那么父类的功能就可以定义为抽象方法。于是就用到了抽象类。
(3)普通类和抽象类都只能单继承。
(4)进一步审查发现有些对象还可以进一步抽象,而后有时候还需要多继承,这个时候可以使用接口。接口定义了一些行为,继承接口的类应该必须拥有这些行为,按照这些行为去做。接口定义的行为内容子类都要去实现,接口还可以多继承。
2、接口和抽象类的具体区别
- 接口永远是公共的,而且里面只能有方法,属性,委托和索引器,不能在接口里面写出方法或属性的实现代码。而抽象类里面可以拥有字段,抽象方法,非抽象方法。
- 子类实现接口的方法时,不需要任何关键字,直接实现即可。抽象类实现的时候的抽象成员要用override重写。
- 抽象类主要是用来拓展类的功能和属性,而接口主要是用来规定类的行为方式。如果你需要共享状态或部分实现,那么应该使用抽象类。如果你需要定义一组行为,并且不关心具体实现,那么应该使用接口。
- 接口的意义是为了实现多态。
- 实现接口的子类必须将接口的所有成员函数实现。
- 接口可以继承多个接口,抽象类只能继承一个类(一个子类只能有一个父类),且继承的类必须写在最前面
3、接口和抽象类相同的地方
- 都不能直接实例化(也就是不能new一个对象)
- 都可以包含未实现的声明方法。
- 子类必须实现抽象类的抽象方法,接口的所有成员(包括方法,其他成员)
......后续继续补充
本文暂时没有评论,来添加一个吧(●'◡'●)