抽象类与接口
前言:
设计模式里经常用的抽象类和接口,二者有什么区别是需要知道的下面简单的写一下。
内容:
抽象类与接口在书写的方面很像但是又有区别。
多态一抽象方法与抽象类
1.抽象类与抽象方法由stract修饰2.abstract的使用注意
3.抽象方法没有方法体
4.抽象成员只能存在于抽象类中
5.抽象类可以有非抽象成员
6.抽象类的派生类必须实现抽象方法体
7.抽象类只能用作基类,无法实例化
虚方法:用virtual修饰的方法叫做虚方法
虚方法可以在子类中通过override关键字来重写
常见的虚方法:toString()Equals
接口
接口的定义:interface关键字,接口中可以有属性,方法(未实现)接口是完全抽象的一种约定,借口就是用来实现的。
接口的名称通常以I开头(大写的i),如:IList
如果一个可既继承了又实现了接口,那么累必须写在前面,一个类只能继承一个父类,但可以实现多个接口。
接口只有方法、属性、索引和事件的声明。不能直接进行实例化,接口不包含方法的实现,接口可以多继承。
抽象类与接口区别:
相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。
不同点:
接口支持多继承,抽象类不能实现多继承
接口只能定义行为,抽象尅既可以定义行为,还可能提供实现,
接口可以用于支持回调,抽象类不能实现回调。因为继承不支持。
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法
抽象类可以定义字段,属性半含有实现的方法。
接口可以作用于值类型和引用类型,抽象类只能作用于引用类型,例如struct就可以继承接口,而不能继承类。
总结:
抽象和继承在具体实现的过程中是可以区分出来的但是在书写上还是很像的。