Kotlin基础(①)

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 }
相关推荐
kymjs张涛9 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
糖猫猫cc12 小时前
Kite:填充处理器
kotlin·orm·kite
范特西林12 小时前
实战演练——从零实现一个高性能 Binder 服务
android
范特西林13 小时前
代码的生成:AIDL 编译器与 Parcel 的序列化艺术
android
范特西林13 小时前
深入内核:Binder 驱动的内存管理与事务调度
android
范特西林14 小时前
解剖麻雀:Binder 通信的整体架构全景图
android
范特西林14 小时前
破冰之旅:为什么 Android 选择了 Binder?
android
奔跑中的蜗牛66615 小时前
一次播放器架构升级:Android 直播间 ANR 下降 60%
android
测试工坊17 小时前
Android 视频播放卡顿检测——帧率之外的第二战场
android
Kapaseker19 小时前
一杯美式深入理解 data class
android·kotlin