主要内容
- 概述
- 扩展函数
- 扩展属性
- 扩展函数或属性范围
概述
kotlin允许扩展类的属性和方法,不需要继承或使用 Decorator 模式。扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。
扩展函数
扩展函数定义形式:
fun receiverType.functionName(params){
body
}
其中,receiverType 为待扩展的类名,. 修饰符为扩展符,functionName 为自定义的扩展函数名,params 为自定义的扩展函数参数,可为空。
class User(var name:String)
/**扩展函数**/
fun User.Print(){
print("User name is $name")
}
fun main(arg:Array<String>){
var user = User("jason")
user.Print()
}
扩展函数作用域,受函数的visibility modifiers影响。
扩展函数并没有对原类做修改,而是为被扩展类的对象添加新的函数。有一条规则,若扩展函数和类原有函数一致,则使用该函数时,会优先使用类本身的函数。
class User{
fun print(){println("user")}
}
fun User.print(){println("extend for user")}
可以扩展一个空对象
fun Any?.toString():String{
if(this==null)
return "null"
else{
return toString()
}
}
对象有可能为空,为空时,返回"null",而不是抛出NullPointException。
扩展属性
扩展属性允许定义在类或者kotlin文件中,不允许定义在函数中。初始化属性因为属性没有backing field,所以不允许被初始化。

扩展范围
通常扩展函数或属性定义在顶级包下,通过import导入扩展的函数名进行使用。
扩展函数作用:简化调用过程。