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 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
白露与泡影4 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
凯瑟琳.奥古斯特5 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
雪度娃娃5 小时前
转向现代C++——在意为改写的函数添加 override
开发语言·c++
喵星人工作室6 小时前
C++火影忍者1.1.2
开发语言·c++
basketball6166 小时前
C++ 中的 ptrdiff_t 详解
开发语言·c++
月亮邮递员6167 小时前
Markdown语法总结
开发语言·前端·javascript
printfLILEI7 小时前
php中的类与对象以及反序列化
linux·开发语言·php
曹牧7 小时前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#
代码中介商7 小时前
深入解析STL中的stack、queue与priority_queue
开发语言·c++