Kotlin类基础
外观
Kotlin类基础[编辑 | 编辑源代码]
Kotlin类基础是面向对象编程(OOP)的核心概念之一。类是对象的蓝图,定义了对象的属性和行为。Kotlin的类系统简洁而强大,支持现代OOP特性,同时减少了样板代码。
类的定义[编辑 | 编辑源代码]
在Kotlin中,使用class
关键字定义类。最简单的类可以没有任何成员:
class EmptyClass
类成员[编辑 | 编辑源代码]
类可以包含:
- 构造函数(主构造和次构造)
- 属性(字段)
- 方法(函数)
- 初始化块
- 嵌套类
class Person(
val name: String, // 属性 - 只读(val)
var age: Int // 属性 - 可读写(var)
) {
// 方法
fun greet() {
println("Hello, I'm $name and I'm $age years old.")
}
}
构造函数[编辑 | 编辑源代码]
Kotlin类可以有:
- 主构造函数:类头部分声明
- 次构造函数:类体内用
constructor
声明
主构造函数[编辑 | 编辑源代码]
主构造函数简洁的语法:
class User(val id: Int, val name: String)
等价于:
class User constructor(_id: Int, _name: String) {
val id: Int = _id
val name: String = _name
}
次构造函数[编辑 | 编辑源代码]
次构造函数必须委托给主构造函数(直接或间接):
class Person(val name: String) {
var age: Int = 0
// 次构造函数
constructor(name: String, age: Int) : this(name) {
this.age = age
}
}
属性[编辑 | 编辑源代码]
Kotlin属性自动生成getter/setter:
class Rectangle(
val width: Int, // 只读属性(只有getter)
var height: Int // 可读写属性(有getter和setter)
) {
val area: Int // 自定义getter
get() = width * height
}
初始化顺序[编辑 | 编辑源代码]
类实例化时的初始化顺序: 1. 主构造函数参数 2. 类体内属性初始化器和初始化块 3. 次构造函数体
实际案例:银行账户[编辑 | 编辑源代码]
class BankAccount(
val accountNumber: String,
initialBalance: Double
) {
var balance = initialBalance
private set // setter设为私有
fun deposit(amount: Double) {
require(amount > 0) { "存款金额必须为正数" }
balance += amount
}
fun withdraw(amount: Double): Boolean {
require(amount > 0) { "取款金额必须为正数" }
return if (amount <= balance) {
balance -= amount
true
} else {
false
}
}
override fun toString() = "账户 $accountNumber 余额: $balance"
}
// 使用示例
fun main() {
val account = BankAccount("123456789", 1000.0)
account.deposit(500.0)
println(account) // 输出: 账户 123456789 余额: 1500.0
val success = account.withdraw(2000.0)
println("取款${if (success) "成功" else "失败"}") // 输出: 取款失败
}
类的关系[编辑 | 编辑源代码]
Kotlin支持面向对象的基本关系:
- 继承:使用
:
符号 - 实现:接口同样使用
:
- 组合:通过属性包含其他类实例
open class Animal(val name: String) { // open允许继承
open fun makeSound() = "无声"
}
class Dog(name: String) : Animal(name) {
override fun makeSound() = "汪汪!"
}
可见性修饰符[编辑 | 编辑源代码]
Kotlin提供四种可见性:
public
(默认):随处可见internal
:同一模块内可见protected
:子类可见private
:类内可见
数据类[编辑 | 编辑源代码]
对于纯数据类,Kotlin提供特殊语法:
data class User(val id: Int, val name: String, val email: String)
数据类自动生成:
equals()
/hashCode()
toString()
copy()
- 组件函数(用于解构)
总结[编辑 | 编辑源代码]
Kotlin的类系统设计体现了现代语言特性:
- 简洁的主构造函数语法
- 属性自动生成访问器
- 明确的初始化顺序
- 丰富的类关系支持
- 数据类的特殊优化
掌握Kotlin类基础是深入理解Kotlin面向对象编程的关键第一步。