接口:
- 定义:interface关键字,接口中可以有属性、方法
- 接口的名称通常以“I”开头,如IFly、IList
- 如果一个类即继承了类又实现了接口,那么类必须写在接口前面。一个类只能继承一个父类,但可以实现多个接口。
接口语法:
- 完全抽象的一种约定
- 接口就是用来实现的
- 接口只有方法、属性、索引和事件的声明
[访问修饰符] interface 接口名
{
//接口成员定义
}
interface IfFly
{
void Ifly();
}
接口和类有什么异同
相同点
接口、类和结构都可以从多个接口继承
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员
接口和类都可以包含事件、索引器、方法、属性
不同点
不能直接实例化接口
接口不包含方法的实现
接口可以多继承,类只能单继承
类定义可在不同的源文件之间进行拆分
类之间不支持多重继承,接口之间支持。类对接口叫实现,不叫继承。
抽象类和接口区别
相同点
- 都不能被直接实例化,都可以通过继承实现其抽象方法
不同点
- 接口支持多继承,抽象类不能实现多继承。
- 接口只能定义行为,抽象类既可以定义行为,还可以提供实现。
- 抽象类可以定义字段、属性、包含有实现的方法
- 接口可以作用于值类型(Struct)和引用类型(Class),抽象类只能作用于引用类型。
建立多态几种方式
- 用父类实现多态
- 用抽象类实现多态
- 用接口实现多态
保留基类方法使用new关键字、重写方法时使用override关键字。