kotlin get set

在 Kotlin 中,如果想实现一个类的属性可以从外部读取但不能修改,可以使用自定义的 getter 和 private setter。以下是一个示例代码:

class MyClass {
    var myProperty: String
        private set // 使 setter 私有化,外部无法修改
        get // 默认 getter

    constructor(initialValue: String) {
        myProperty = initialValue
    }
}

fun main() {
    val myObject = MyClass("Initial Value")
    println(myObject.myProperty) // 可以读取属性a
    // myObject.myProperty = "New Value" // 这行代码将会导致编译错误,因为 setter 是私有的
}

在这个示例中,myProperty 的 getter 是公共的,因此可以从类的外部读取该属性。但是,setter 是私有的,因此无法从外部修改该属性。

如果需要进一步自定义 getter 或 setter,也可以这样做:

class MyClass {
    var myProperty: String
        private set(value) {
            field = value // 自定义 setter
        }
        get() = field // 自定义 getter

    constructor(initialValue: String) {
        myProperty = initialValue
    }
}

fun main() {
    val myObject = MyClass("Initial Value")
    println(myObject.myProperty) // 可以读取属性
    // myObject.myProperty = "New Value" // 这行代码将会导致编译错误,因为 setter 是私有的
}
相关推荐
沈韶珺14 分钟前
Elixir语言的安全开发
开发语言·后端·golang
go546315846541 分钟前
python 从知网的期刊导航页面抓取与农业科技相关的数据
开发语言·python·科技
m0_699659561 小时前
QT知识点复习
开发语言·qt
南玖yy1 小时前
C语言:数组的介绍与使用
c语言·开发语言·算法
米码收割机1 小时前
【python】tkinter实现音乐播放器(源码+音频文件)【独一无二】
开发语言·python·pygame
笛柳戏初雪2 小时前
Python中的函数(下)
开发语言·python
美味小鱼2 小时前
初识Cargo:Rust的强大构建工具与包管理器
开发语言·rust·cargo
c-c-developer2 小时前
C++ Primer 标准库类型string
开发语言·c++
山茶花开时。2 小时前
[SAP ABAP] Debug Skill
开发语言·sap·abap
奥顺互联V2 小时前
yes镜像站群/PHP驱动的镜像站群架构实践
开发语言·架构·开源·php