第十九节 kotlin中的单例、伴生对象

1、关键字object
就是将class变成object

fun main(args: Array) {

    println(Utils.name)
    Utils.sayHello()
}


object Utils
{
    var name="张三"
    fun sayHello()
    {
        println("hello")
    }
}

输出:


image.png

Utils的用法就是一个单例,但是在Utils类中所有的成员变量都是静态的,所有的方法是非静态的,所以它比较适用于成员变量不是很多的时候


image.png

2、伴生对象 关键字(companion)
可以把成员变量的属性定义为静态
fun main(args: Array) {

    var utils=Utils()
    println(utils.age)
    utils.sayHello()

    //类直接访问
    println(Utils.name)
}


class Utils
{
    fun sayHello()
    {
        println("hello")
    }
    companion object {
        var name="张三"
    }
    var age=20
}

输出:


image.png

3、实现和java一样的单例
java中一般都是私有化构造方法并且定义一个static public方法,获取对象实例

fun main(args: Array) {

    println(Utils.instance.name)
}


class Utils private constructor()
{
    fun sayHello()
    {
        println("hello")
    }
    var name="张三"
    var age=20
    companion object {
        val instance by lazy { Utils() }
    }
    
}

输出:


image.png

你可能感兴趣的:(第十九节 kotlin中的单例、伴生对象)