1.多态的不同方式
- 子类型多态:子类型替换超类型实例
- 参数多态:泛型
- 对第三方类进行扩展
- 特设多态:一个多态函数室友多个不同的实现,依赖于其实参而调用相应版本的函数。
2.扩展:为别的类添加方法、属性
扩展函数、属性:接收者类型.<Type>
标准库中的扩展函数:run、let、also、takeIf
3.Android中扩展的应用
inline fun Activity.snackbar(message: String) = snackbar(find(R.id.content), message)
fun Context.isMobileConnected(): Boolean {}
fun <T : View> Activity._view(@IdRes id: Int): T {
return findViewById(id) as T
}
4.使用扩展注意事项
扩展接收器:与Kotlin扩展密切相关的接收器,表示为其定义扩展的对象。
调度接收器:扩展被声明成成员时存在的一种特殊接收器,它表示声明扩展名的类的实例。
- 如果扩展函数式顶级函数或成员函数,则不能被覆盖;
- 无法访问其接收器的非公共属性;
- 扩展接收器总是被静态调度。
