美文网首页
如何在kotlin中创建静态变量

如何在kotlin中创建静态变量

作者: eliteTyc | 来源:发表于2019-09-26 09:34 被阅读0次

    在kotlin中创建静态变量有三种方式
    1.使用object关键字,比如我现在要在User这个类中新建静态变量与静态方法

    class User {
    
        object NameFiled{ //---注解1
            var name = "张三"
            val age = 18
            fun printNameAndAge(){
                println(name+ age)
            }
        }
    }
    
    fun main() {
        println(User.NameFiled.name)
        println(User.NameFiled.age)
        User.NameFiled.name = "李四"
    //    User.NameFiled.age = 21 因为age定义成val所以会报错
        println(User.NameFiled.name)
    //    调用静态方法
        User.NameFiled.printNameAndAge()
        
    //    输出结果为
    //    张三
    //    18
    //    李四
    //    李四18
    }
    
    解读

    注解1:object 关键字相当于在当前类新建一个名叫NameFiled的静态内部类,然后var name相当于java中的static String name,val age相当于java中的static final int age,在后面不可以修改
    调用方式:外部类名.内部类名.属性或方法

    2.使用companion object关键字,实现上面一样的静态属性与方法代码如下

    class User2 {
    
        companion object{ // 注解---1
            var name = "张三"
            val age = 18
            fun printNameAndAge(){
                println(name+ age)
            }
        }
    }
    
    fun main() {
        println(User2.name)
        println(User2.age)
        User2.name = "李四"
    //    User2.age = 21 因为age定义成val所以会报错
        println(User2.name)
    //    调用静态方法
        User2.printNameAndAge()
    
    //    输出结果为
    //    张三
    //    18
    //    李四
    //    李四18
    }
    
    讲解

    注解1:companion object关键字是直接给当前类新建括号里面的静态属性和方法,而object是给当前类新建一个内部类,在内部类新建属性和方法,所以companion object后面不需要加别的东西,而object需要加一个内部类的类名
    调用方式:因为companion object是直接给当前类创建,所以直接使用:当前类名.属性或方法名就能出来

    3.使用顶层声明的方式
    例如我现在要实现一个工具类,只需要新建一个kt file

    • CalcUtil.kt代码 注意包名
    package tyc
    /**
     *  create by elitetyc
     *  date:2019/9/12
     *  desc:
     *
     **/
    var tycName = "李四"
    val age = 18
    
    fun sum(p1: Int, p2: Int) {
        println(p1+p2)
    }
    
    • test.kt 代码 注意包名
    package tyc
    
    /**
     *  create by elitetyc
     *  date:2019/9/12
     *  desc:
     *
     **/
    
    fun main() {
    
        println(tycName)
        tycName = "臧三"
        println(tycName)
    
        println(age)
    //    age = 21 因为声明为val 所以修改时报错
    
        sum(10,10)
    
    
    //    输出结果是
    //    李四
    //    臧三
    //    18
    //    20
    }
    
    解读:

    顶层声明的方式,声明的属性与方法,是属于当前包的,当前包下的其他类或方法可以直接使用,使用时直接输属性名或方法名就可以了

    相关文章

      网友评论

          本文标题:如何在kotlin中创建静态变量

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