Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第二部分:面向对象编程与 Kotlin 特性

第二部分:面向对象编程与 Kotlin 特性

第 5 章:类与对象

5.3 属性与字段(getter 和 setter)

在 Kotlin 中,属性是类的重要组成部分,用于存储对象的状态。与 Java 不同,Kotlin 的属性默认包含自动生成的 getter 和 setter,同时支持自定义逻辑。

1. 基本语法

Kotlin 中声明属性的语法如下:

class Person {
    var name: String = "Alice" // 可变属性(自动生成 getter 和 setter)
    val age: Int = 25         // 只读属性(仅生成 getter)
}
  • var 表示可变属性(可读写)。
  • val 表示只读属性(仅可读)。

2. 默认的 Getter 和 Setter

Kotlin 会为属性自动生成默认的访问器:

  • get() 返回属性值。
  • set(value) 设置属性值(仅限 var 属性)。

等价于以下显式代码:

class Person {
    var name: String = "Alice"
        get() = field
        set(value) { field = value }
}
  • field 是幕后字段(backing field),表示属性的实际存储值。

3. 自定义 Getter/Setter

可以为属性添加自定义逻辑:

class Rectangle(val width: Int, val height: Int) {
    val area: Int
        get() = width * height // 计算属性(无幕后字段)

    var description: String = "Rectangle"
        set(value) {
            field = "Modified: $value" // 在赋值时添加前缀
        }
}

4. 可见性修饰

可以限制访问器的可见性:

class BankAccount {
    var balance: Double = 0.0
        private set // 只能在类内部修改
}

5. 延迟初始化属性

对于非空属性,若初始化时机较晚,可使用 lateinit:

class Service {
    lateinit var apiClient: ApiClient // 必须在使用前初始化
}

总结

Kotlin 的属性机制通过简化 getter/setter 的声明,减少了样板代码,同时支持灵活的自定义逻辑,是面向对象设计的核心特性之一。

Last Updated:: 5/21/25, 7:58 PM