美文网首页
Kotlin-属性

Kotlin-属性

作者: 122604 | 来源:发表于2017-11-30 13:46 被阅读0次

1、属性声明

    var:可变变量

    val:不可变变量

    vararg:可变参数(用于参数声明)

    类中声明的属性必须进行初始化,或者使用abstract修饰,但是使用abstract修饰后的属性,在子类中也必须进行初始化

        abstract class Test { 

                         abstract var name: String//在子类中进行初始化

                         var age: Int 

                         var sex: Int = 1 

                         /** * 初始化函数 */ 

                         init { age = 15 }

        }

2、属性的Getter和Setter

    声明属性时,编译器会自动生成对应的getter和setter。但是使用val声明的属性不会生成setter方法,因为val是不可变变量。

        完整写法:

                var (propertyName):(PropertyType) [=(property_initializer)]

                [(getter)]

                [(setter)]

3、改变属性的访问权限

    var userName: String = "lisi"

                    private set    //设置方法可见度未private,但是不改变原有实现

    getter的修饰符必须与当前属性的可见性保持一致

4、Getter和Setter也可以进行自定义

    var lastName: String = "li"

                get() = field.toUpperCase()

                set

    var no: Int = 100

                get() = field

                set(value) {

                        if (value < 50) {

                                field = value

                        } else {

                                field = 0

                        }

                }

    field:幕后参数,与java中的this类似.在这里他指向的是当前的属性

5、延迟初始化属性

    声明NULL值属性,在需要的时候再进行初始化,则需要使用lateinit var进行修饰声明

                lateinit var user:User

                fun initData(){

                        user = User()

                }

6、代理属性

    代理属性通过lazy关键字实现懒加载的方式实现:

    val address1: String by lazy {

                "陕西省西安市"

    }

    val address2 by lazy {

            "陕西省西安市" as String

    }

    val address3 by lazy {

            "陕西省西安市"

    }

    val textView by lazy {

            findViewById(R.id.textView) as TextView

    }

相关文章

网友评论

      本文标题:Kotlin-属性

      本文链接:https://www.haomeiwen.com/subject/ntkpbxtx.html