C#接口与抽象类的区别

C#中接口(interface)与抽象类(abstract)的区别:

1、接口用于规范,抽象用于共性;
2、抽象类是类,故只能单继承,接口可一次实现多个(实现多继承);
3、接口中只能声明方法Method、属性、事件、索引器,不能定义字段,不能实现方法,抽象类可以,它是一个不完全类(抽象类中甚至可以没有抽象方法);
4、在抽象类中添加一个方法,那么它的子类就都有了这个方法,在接口中添加一个方法,实现它 的所有类都需要重写以实现这个新添加的方法;
5、接口成员必须是公共的,且不写public,抽象类中的非抽象方法成员的访问权限任意,其抽象方法的访问权限不能是private;
6、接口可以用于支持回调,抽象类因为继承不能实现回调;
7、接口可作用于值/引用类型,抽象类只能作用于引用类型(eg:stract可实现接口,不能继承类);
8、接口如果在实现类它的类中显示实现的话,该方法属于接口,不属于实现的那个类。

你可能感兴趣的:(C#学习笔记,C#基础,开发语言,c#)