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.1 类的定义与实例化

1. 类的基本定义

在 Kotlin 中,使用 class 关键字定义类。类的声明包含类名、类头(主构造函数、父类等)和类体(属性和方法)。如果类体为空,可以省略花括号 {}。

// 最简单的类定义
class Person

// 带属性和方法的类
class Person {
    var name: String = ""
    fun sayHello() {
        println("Hello, $name!")
    }
}

2. 构造函数

Kotlin 的类可以有一个主构造函数和多个次构造函数:

  • 主构造函数:直接声明在类名后,使用 constructor 关键字(如果无注解或可见性修饰符可省略)。
  • 次构造函数:通过 constructor 在类体内定义。
// 主构造函数
class Person(val name: String, var age: Int) {
    init {
        println("Person initialized with name: $name")
    }
}

// 次构造函数
class Person {
    var name: String = ""
    var age: Int = 0

    constructor(name: String) {
        this.name = name
    }

    constructor(name: String, age: Int) : this(name) {
        this.age = age
    }
}

3. 实例化对象

Kotlin 中实例化对象不需要 new 关键字,直接调用构造函数即可:

val person1 = Person("Alice", 25) // 主构造函数
val person2 = Person("Bob")       // 次构造函数

4. 初始化块

init 代码块用于在主构造函数执行时初始化逻辑,多个 init 块按顺序执行:

class Person(val name: String) {
    init {
        println("First init block: $name")
    }

    init {
        println("Second init block")
    }
}

5. 属性与默认值

Kotlin 支持在声明属性时直接赋默认值:

class Person(
    val name: String = "Unknown",
    var age: Int = 0
)

6. 可见性修饰符

  • public(默认):全局可见。
  • private:仅类内部可见。
  • protected:类内部及子类可见。
  • internal:同一模块内可见。
class Example {
    private val secret = "Hidden"
    protected open val message = "Hello"
    internal val version = "1.0"
}

7. 示例:完整类定义

class Car(
    val brand: String,
    var model: String,
    private var year: Int = 2020
) {
    init {
        println("Car $brand $model initialized")
    }

    fun getYear(): Int = year

    fun updateModel(newModel: String) {
        model = newModel
    }
}

// 使用
val myCar = Car("Tesla", "Model 3")
myCar.updateModel("Model Y")
println(myCar.getYear())

关键点总结

  • Kotlin 的类定义比 Java 更简洁。
  • 主构造函数和属性声明可以合并。
  • 实例化无需 new 关键字。
  • init 块用于灵活的初始化逻辑。
Last Updated:: 5/21/25, 7:58 PM