技术文档中心
首页
React
Vue
TypeScript
Kotlin
React Native
Electron
Android
首页
React
Vue
TypeScript
Kotlin
React Native
Electron
Android
  • 基础入门

    • Kotlin 教程
    • 快速开始
    • 基础语法
    • 变量与类型
    • 控制流
    • 函数
  • 面向对象

    • 类与对象
  • 高级特性

    • 泛型
    • 集合操作
    • 协程

类与对象

类定义

// 基本类
class Person {
    var name: String = ""
    var age: Int = 0
}

// 使用
val person = Person()
person.name = "Alice"
person.age = 25

构造函数

主构造函数

class Person(val name: String, var age: Int)

// 使用
val person = Person("Alice", 25)
println(person.name)  // Alice

初始化块

class Person(val name: String, var age: Int) {
    init {
        println("Person created: $name")
        require(age >= 0) { "Age must be positive" }
    }
}

次构造函数

class Person(val name: String) {
    var age: Int = 0
    
    constructor(name: String, age: Int) : this(name) {
        this.age = age
    }
}

属性

class Person {
    // 自定义 getter/setter
    var name: String = ""
        get() = field.uppercase()
        set(value) {
            field = value.trim()
        }
    
    // 只读属性
    val isAdult: Boolean
        get() = age >= 18
    
    var age: Int = 0
        private set  // 私有 setter
}

方法

class Calculator {
    fun add(a: Int, b: Int): Int {
        return a + b
    }
    
    fun subtract(a: Int, b: Int) = a - b
}

val calc = Calculator()
println(calc.add(5, 3))  // 8

可见性修饰符

class Example {
    private val privateVal = 1      // 仅类内可见
    protected val protectedVal = 2  // 类及子类可见
    internal val internalVal = 3    // 模块内可见
    public val publicVal = 4        // 公开(默认)
}

嵌套类与内部类

// 嵌套类
class Outer {
    private val bar = 1
    
    class Nested {
        fun foo() = 2
    }
}

val nested = Outer.Nested()

// 内部类
class Outer {
    private val bar = 1
    
    inner class Inner {
        fun foo() = bar  // 可访问外部类成员
    }
}

val inner = Outer().Inner()

伴生对象

class MyClass {
    companion object {
        const val CONSTANT = "constant"
        
        fun create(): MyClass {
            return MyClass()
        }
    }
}

// 使用
println(MyClass.CONSTANT)
val instance = MyClass.create()

对象声明(单例)

object DatabaseManager {
    fun connect() {
        println("Connected to database")
    }
}

// 使用
DatabaseManager.connect()

对象表达式

// 匿名对象
val obj = object {
    val x = 10
    val y = 20
}

println(obj.x + obj.y)

// 实现接口
val clickListener = object : OnClickListener {
    override fun onClick() {
        println("Clicked")
    }
}

枚举类

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}

// 带属性
enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

// 使用
val direction = Direction.NORTH
val color = Color.RED
println(color.rgb)

数据类

data class User(val name: String, val age: Int)

val user1 = User("Alice", 25)
val user2 = user1.copy(age = 26)

// 自动生成的方法
println(user1)  // User(name=Alice, age=25)
println(user1 == user2)  // false

// 解构
val (name, age) = user1

密封类

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result()
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println(result.data)
        is Result.Error -> println(result.message)
        Result.Loading -> println("Loading...")
    }
}
最近更新: 2026/2/24 16:53
Contributors: hailong