kotlin-扩展



主要内容


  • 概述
  • 扩展函数
  • 扩展属性
  • 扩展函数或属性范围

概述


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导入扩展的函数名进行使用。

扩展函数作用:简化调用过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值