1、关键字object
就是将class变成object
fun main(args: Array<String>) {
println(Utils.name)
Utils.sayHello()
}
object Utils
{
var name="张三"
fun sayHello()
{
println("hello")
}
}
输出:
Utils的用法就是一个单例,但是在Utils类中所有的成员变量都是静态的,所有的方法是非静态的,所以它比较适用于成员变量不是很多的时候
2、伴生对象 关键字(companion)
可以把成员变量的属性定义为静态
fun main(args: Array<String>) {
var utils=Utils()
println(utils.age)
utils.sayHello()
//类直接访问
println(Utils.name)
}
class Utils
{
fun sayHello()
{
println("hello")
}
companion object {
var name="张三"
}
var age=20
}
输出:
3、实现和java一样的单例
java中一般都是私有化构造方法并且定义一个static public方法,获取对象实例
fun main(args: Array<String>) {
println(Utils.instance.name)
}
class Utils private constructor()
{
fun sayHello()
{
println("hello")
}
var name="张三"
var age=20
companion object {
val instance by lazy { Utils() }
}
}
输出: