美文网首页
Kotlin中的变量属性

Kotlin中的变量属性

作者: 王怀智 | 来源:发表于2018-12-04 19:04 被阅读5次

    变量的定义

    类中的属性可以用val和var来表示
    var代表可读写的
    val代表只读

    案例

        val name: String = "王怀智"
        var age: Int = 12
        var compary: String = "山舟网络"
    

    使用/调用

      Test().name  //不可修改
      Test().age=21
      Test().compary="北京。。"
    

    Getter和Setter

    • var定义的变量,添加get,set
     // ------------------------var定义------②----------------------------
        var testVar: String = ""
            get() = "永远不变"
            set(value) {
                //field是指属性本身,value是约定俗成的
                field = value
            }
        var testVar1: String = ""
            get() = field
            set(value) {
                field = if (value.isNotEmpty()) value else "null"
            }
    
        fun test1() {
            //***如果get()给定了值后,set()再怎么变化都不会改变值
            testVar = "木有变化"
            testVar1 = "有变化啦"
            println("testVar的值为+$testVar+$testVar1")
            //System.out: testVar的值为+永远不变+有变化啦
        }
    
    • val 定义变量,添加get,没有set方法
        // ----------------------val定义--------③----------------------------
        /*
        使用了val之后,将没有set()函数
        属性可以默认不赋值,get()必须给定值
         */
        val testVal: String
            get() = "默认不赋值,没有set"
    
        fun test2() {
            PrintlnUtils(testVal)
            //System.out: 》》》》》
            //System.out: 默认不赋值,没有set
            //System.out: 《《《《《
        }
    

    可访问修饰符

        // ------------------------------④----------------------------
        /*
        属性的可见性修饰
         */
        var varTest3: String = "set不可见"
            private set  //setter()访问修饰符私有化
        var varTest31: String = "get不可修饰为私有化"
        //        private get  //编译器将报错 必须为可见
        val varTest32: String = "val set私有化错误"
        //   private set    //编译错误,本来就没有setter方法
        fun test3(): String {
            /*
            这里可以运行setter方发,但是在Kotlin2().varTest3将不能赋值,因为varTest3是私有化的
             */
            varTest3 = "将报错,无法运行"
            PrintlnUtils(varTest3)
            return varTest3
        }
    

    编译时的常量

    // ------------------------------⑤----------------------------
        /*
        编译时的常量
        在java中称为常量 final
        在kotlin中称为常数 const
         */
    //    const val VAL_CONST=5
        /*
        直接在类中定义会报错,需要在object中定义
         */
        companion object {
            //这样就不报错了。
            const val VAL_CONST=5
        }
    

    相关文章

      网友评论

          本文标题:Kotlin中的变量属性

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