Kotlin——幕后属性、延迟初始化属性

kotlin 复制代码
class BackingProgress(name:String){
    //定义private修饰的属性,该属性是幕后属性
    private var _name:String =name

    /**
     * 幕后属性主要是实现封装和数据的隐藏,幕后属性允许开发者为类的属性创建一个隐藏的、
     * 私有的字段,这个字段只有内部方法可以访问,通过幕后属性,可以将属性的读写操作
     * 封装在内部类时间中,对外只暴露安全的访问方法,这样,可以在不破坏封装的前提下,对
     * 内部数据执行额外的操作
     */
    var name
        //重写getter方法,返回幕后属性的值
        get() = _name
        set(newName){
            //执行合理性校验,要求用户名必须在2~6位之间
            if (newName.length >6 ||newName.length<2){
                println("您设置的人名不符合要求")
            }else{
                //对幕后属性赋值
                _name = newName
            }
        }
}

fun main(args: Array<String>) {
    var p =BackingProgress("李刚")
    //访问p.name,实际商会转为访问幕后属性_name
    println(p.name)
    //对p.name赋值,实际上会转为对幕后属性_name赋值
    p.name = "孙悟空"
    println(p.name)
}

延迟初始化属性

kotlin 复制代码
class User {
    lateinit var name: String
    lateinit var birth:Date
}
fun main(args: Array<String>) {
    var user = User()
//    println(user.name) //lateinit property name has not been initialized
    user.name ="你好你好"
    println(user.name)
}
相关推荐
广州华水科技几秒前
2026年高口碑GNSS变形监测一体机推荐:提升水库安全解决方案
前端
xiaoxue..2 分钟前
讲讲 浏览器的缓存机制
前端·缓存·面试·浏览器
丘比特惩罚陆4 分钟前
制作类似aimlab的测试手速反应力的小游戏
开发语言·javascript·visual studio
Data_Journal5 分钟前
Node.js网络爬取指南——简单易上手!
大数据·linux·服务器·前端·javascript
a11177616 分钟前
可视化角色权限配置页面(html 开源)
前端·开源·html
Lee川23 分钟前
个人中心与 AI 头像生成:从页面到 DALL-E 的完整实现
前端·架构
tedcloud1236 小时前
UI-TARS-desktop部署教程:构建AI桌面自动化系统
服务器·前端·人工智能·ui·自动化·github
UXbot9 小时前
AI原型设计工具如何支持团队协作与快速迭代
前端·交互·个人开发·ai编程·原型模式
ZC跨境爬虫10 小时前
跟着MDN学HTML_day_48:(Node接口)
前端·javascript·ui·html·音视频
PieroPc11 小时前
CAMWATCH — 局域网摄像头监控系统 Fastapi + html
前端·python·html·fastapi·监控