C#抽象类和接口
抽象类注意事项
1、用来列举一个类所需要的行为
2、不需要实现具体的行为方法
3、必须有子类为其实现(通过override关键字实现)
4、有抽象方法的类,必须定义为抽象类
5、抽象方法,只需要指明方法的返回值类型,方法名和参数,不需要提供方法具体的实现
接口注意事项
1、接口中只能声明方法、属性、索引器和事件
2、接口不能声明字段、构造方法、常量和委托
3、接口的成员默认是public的,如果明确指定成员的访问级别会报编译错误
4、接口中的所有方法、属性和索引器都必须没有实现
5、C#中的接口以大写“I”开头
两者之间的相同点
都不能被直接实例化,都可以通过继承实现其抽象方法。
两者之间的不同点
1、接口支持多继承;抽象类不能实现多继承。
2、接口只能定义行为;
抽象类既可以定义行为,还可能提供实现。
3、接口可以用于支持回调(CallBack);
抽象类不能实现回调,因为继承不支持。
4、接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法。
5、抽象类可以定义字段、属性、包含有实现的方法。
6、接口可以作用于值类型(Struct)和引用类型(Class);
抽象类只能作用于引用类型。例如,Struct 就可以继承接口,而不能继承类。
~END~