先用人话理解
类像一份设计图,对象是根据设计图创建出来的具体实例。类可以把属性(数据)和方法(行为)放在一起。继承则允许一个类基于另一个类扩展行为,但应在确实需要时使用。
记住这一点
主构造器写在类名后面的括号里。`val name` 和 `var price` 会成为属性。Kotlin 中类默认是 final,若要被继承,需要使用 `open`;子类通过 `: Product(...)` 调用父类构造器。
主构造器写在类名后面的括号里。`val name` 和 `var price` 会成为属性。Kotlin 中类默认是 final,若要被继承,需要使用 `open`;子类通过 `: Product(...)` 调用父类构造器。
看一段代码
先看整体,再留意每一行的中文注释。可以复制到 Kotlin Playground 亲自运行。
Kotlin · 1.9+
open class Product( // open 表示允许其他类继承
val name: String,
var price: Double
) {
fun describe(): String { // 成员函数描述商品
return "$name:¥$price"
}
}
class DiscountProduct( // 继承 Product
name: String,
price: Double,
val discount: Double
) : Product(name, price) {
fun finalPrice(): Double {
return price * discount
}
}
fun main() {
val product = Product("笔记本", 12.5) // 创建对象
println(product.describe())
val sale = DiscountProduct("钢笔", 20.0, 0.8)
println(sale.finalPrice()) // 输出 16.0
}轮到你动手
抄下来,改一改
创建一个 `User` 类,包含 `name` 和 `age` 属性,以及返回自我介绍的 `introduce()` 方法。
小提示:先让原代码成功运行,再一次只改一个地方。
三道小测
先自己选答案,再展开核对。答案不会自动揭晓。
1. 类更接近哪种概念?
2. Kotlin 类默认能被继承吗?
3. 主构造器通常写在哪里?
1. A. 类是创建对象的蓝图。
2. B. 普通类默认 final。
3. A. 类名后面的括号中。
深入阅读
官方类文档继续介绍构造器、属性、继承和可见性。
https://kotlinlang.org/docs/classes.html ↗