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 是私有的
}
相关推荐
虚心的百褶裙4 分钟前
JavaScript性能优化
开发语言·javascript·性能优化
凯瑟琳.奥古斯特10 分钟前
二分查找解力扣1011最优运载能力
开发语言·c++·算法·leetcode·职场和发展
Tim_1028 分钟前
【C++】014、左值与右值的区别
开发语言·c++
天空'之城34 分钟前
Linux 系统编程 14:Reactor 反应堆模式
linux·开发语言·网络编程·reactor 反应堆模式
Zhou14113644 分钟前
Java常见面试题7
java·开发语言
^yi1 小时前
【C++】类和对象(全)
开发语言·c++
Dovis(誓平步青云)1 小时前
《C/C+++ Boost 轻量级搜索引擎实战:架构流程、技术栈与工程落地指南——HTML文件的清洗(上篇)》
开发语言·数据库·c++·搜索引擎·开源
布朗克1681 小时前
Go 入门到精通-13-指针与内存
开发语言·c++·golang·指针与内存
码兄科技9 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能