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)
}
延迟初始化属性
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)
}
文章来源地址https://www.toymoban.com/news/detail-804772.html
文章来源:https://www.toymoban.com/news/detail-804772.html
到了这里,关于Kotlin——幕后属性、延迟初始化属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!