kotlin 单例、静态方法、常量、修饰符
一、object
使用 object 关键字定义一个单例类,通过单例类,去调用方法,这种方法也不叫静态方法,但是可以当作静态方法调用
/** * object * 天生单例 * 1 并不用语法上面初始化 * 2 不需要构造方法 */ object Constants {
//常量 const val tag: String = "ccc" var host: String = "127.0.0.1" private var port: String = "8080" //非静态方法,可当静态方法使用 fun doSomething(){ } }
Constants.doSomething()不是单例方法,可当单例方法使用
二、伴生对象
使用 companion object 为一个类创建一个伴生类,然后调用这个伴生类的方法,这个方法不叫静态方法,但是可以当作静态方法调用。
一个类中只能存在一个伴生对象。
class Dog(name: String, var age: Int) : Animal(), LoadingListener { /** * 伴生对象 static静态方法和静态变量 */ companion object { const val tag1: String = "aaa" private var tag2: String = "bbb" fun getName(): String { return tag2 } } } Dog.getName()
真正的静态方法
1、使用 @JvmStatic 注解
2、顶层方法
三、延迟加载
1、lateinit
lateinit var sex :String
2、by lazy
- 只能作用于val属性
- 该属性调用的时候才会执行
- lambda表达式只执行一次
val sex :String by lazy { "1" }
四、修饰符
常见修饰符
- final 不能被继承,kotlin默认不能被继承
- open 可以被继承覆写
- abstract 必须被覆写 具有open属性
- static 没有此关键字