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 没有此关键字
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!