-
Object
用于生成单例
在init{}
中完成单例的初始化
注意:对象声明不能在局部作用域(即直接嵌套在函数内部),但是它们可以嵌套到其他对象声明或非内部类中。
Object.png
-
companion 伴生对象
适用于类中有静态方法也有非静态方法的情况
静态方法使用companion 包裹 加@jvmStatic
伴生对象的成员可以通过只使用类名作为限定符调用
看起来像是其他语言的静态成员,在运行时他们任然是真实的实力对象,而且可以实现接口
companion.png
-
扩展函数 不需要传入被扩展的类型参数 可以直接被其子类调用
例:Toast工具
新建一个Util.kt
fun Context.ShowToast(String toastMsg) : Toast {
var toast=Toast.makeText(this,toastMsg,Toast.LENGTH_SHORT)
toast.show()
return toast
}
在Activity中 直接调用 showToast(msg)
在fragment中可以getActivity.showToast(msg)
扩展函数并不是真正地修改了原来的类,它是以静态导入的方式来实现的。扩展函数可以被声明在任何文件中,因此有个通用的实践是把一系列有关的函数放在一个新建的文件里。
网友评论