接口
如何创建接口
interface关键词 接口名
接口相比类,最大的不同之处在于,只有定义没有实现
接口相当于一堆骨架,实现接口的类,用于填充骨架上的肉
接口不能进行实例化,只能被类或其他接口实现
如继承类,又实现接口时,类要放在最前面,接口放在后面
比如:
class Square : Cube , IArea , IVolumn
类和结构体都可以去实现接口
抽象类和接口
相同点
两者都不能被实例化
两者都包含了由其他类或结构继承或实现的抽象成员
不同点
抽象类当中除了拥有抽象成员外还可以拥有非抽象成员;而接口中所有的
成员都是抽象的
抽象成员可以使用修饰符修饰,接口当中接口成员访问级别是默认不可修改的,
并且默认是public
接口当中不可以包含构造方法,析构方法,静态成员以及常量
C#类只支持单继承,接口支持多继承
泛型
如何创建泛型
访问修饰符 返回值类型 方法名<> (参数列表)
有些时候重载的方法只有参数类型不同,其他的都一样,这时就可以使用泛型
泛型:需要用户自己传过来的一个数据类型
平时方法里传的是参数,参数是一个变量,参数传递用的是小括号()
而泛型传递的是一个数据类型,反省传递用的是尖括号<>
泛型定义之后,一定要用,不然就没有意义
泛型都在方法的哪里用
定义参数
在方法体内使用参数定义局部变量
设置返回值类型是一个泛型
给泛型添加约束
方法名 (参数列表) where 泛型 : 约束内容
方法名 (参数列表) where 泛型 A : 约束内容1,约束内容2 where 泛型 B : 约束内容3
关于泛型方法的重载
如果泛型的个数不同,可以重载
如果泛型的个数相同,约束不同,不可以重载
接口中的泛型
在类实现某个泛型接口时,必须给接口设置好真实的数据类型
不能在传入类的泛型