open
关键字:打破 Kotlin 的"默认封闭"规则
Kotlin
// 基类必须加 open 才能被继承
open class Animal {
// 方法也要加 open 才能被子类重写
open fun makeSound() {
println("Some sound")
}
}
class Dog : Animal() {
override fun makeSound() {
println("Woof!")
}
}
// 使用
val dog = Dog()
dog.makeSound() // 输出: Woof!
Lambda 表达式:简化匿名函数
Kotlin
val numbers = listOf(1, 2, 3)
// ✅ 正确:单数参数名(代表每个元素)
numbers.filter { number -> number > 1 }
// ❌ 错误:复数参数名(容易误解为整个集合)
numbers.filter { numbers -> numbers > 1 } // 编译错误!因为 `numbers` 是单个元素,不能和数字比较
Kotlin
data class Student(val name: String, val score: Int)
val students = listOf(
Student("小明", 90),
Student("小红", 80)
)
// ✅ 正确:单数参数名,代表每个学生对象
students.filter { student -> student.score > 85 }
// ✅ 也可以用 `it` 简写
students.filter { it.score > 85 }