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 是私有的
}
相关推荐
邂逅星河浪漫2 分钟前
【Java】@EqualsAndHashCode 注解解析
java·开发语言
卖芒果的潇洒农民2 分钟前
C语言面试
c语言·开发语言·面试
人间打气筒(Ada)8 分钟前
「码动四季·开源同行」go语言:如何追踪分布式系统调用链路的问题?
开发语言·golang·开源·分布式链路追踪
前进的李工8 分钟前
SSH隧道实现Dify与Ollama跨服务器通信
开发语言·大模型·github·腾讯云·autodl·dify
小碗羊肉17 分钟前
【从零开始学Java | 第二十五篇】Set集合
java·开发语言
551只玄猫18 分钟前
【数学建模 matlab 实验报告4】非线性规划作业
开发语言·数学建模·matlab·课程设计·实验报告
Dxy123931021620 分钟前
Python 使用 `raise` 报错抛出异常显示 Unicode 码如何解决
开发语言·python
爱技术的阿呆22 分钟前
R code debug 和 study
开发语言·r语言
SiYuanFeng27 分钟前
uv初步介绍及简单的使用方法例子
开发语言·python·uv
寻寻觅觅☆30 分钟前
东华OJ-基础题-31-素数(C++)
开发语言·c++·算法