KOTLIN BASICS · LESSON 06

类和对象

把数据与行为放在一起。用 class、构造器、属性和方法描述商品,并初识继承。

预计 9 分钟可在 Playground 练习

先用人话理解

类像一份设计图,对象是根据设计图创建出来的具体实例。类可以把属性(数据)和方法(行为)放在一起。继承则允许一个类基于另一个类扩展行为,但应在确实需要时使用。

记住这一点
主构造器写在类名后面的括号里。`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. 主构造器通常写在哪里?

深入阅读

官方类文档继续介绍构造器、属性、继承和可见性。

https://kotlinlang.org/docs/classes.html ↗