接口&抽象类
1.接口定义
Kotlin规定所有的接口属性和函数实现都要使用override关键字,接口中定义的函数并不需要open关键字修饰,他们默认就是open的。
1 | interface Movable{ |
可以在接口里提供默认属性的getter方法和函数实现
2.抽象类
要定义一个抽象类,需要在定义之前加上abstract关键字,除了具体的函数实现,抽象类也可以包含抽象函数(只有定义,没有函数实现)
1 | abstract class Gun(val range: Int){ |
3.定义泛型类
泛型类的构造函数可以接受任何类型
MagicBox类指定的泛型参数由放在一对<>里的字母T表示,T是一个代表item类型的占位符。MagicBox类接受任何类型的item作为主构造函数值(item: T),并将item值赋给同样是T类型的subject私有属性
1 | class MagicBox<T>(item: T){ |
泛型参数可以用于函数
定义一个函数用于获取元素,当且仅当MagicBox可用时,才能获取元素。
1 | class MagicBox<T>(item: T){ |
泛型函数或泛型类也可以有多个泛型函数
1 | class MagicBox<T>(item: T){ |
3.1泛型类型约束
如果要确保MagicBox里面只能装指定类型的物品,如Boy类型
1 | class MagicBox<T: Boy>(item: T){ |