Menu
CoddyTech

定义类

本课属于 Coddy Kotlin 学习旅程的“面向对象编程”单元。第 2 课,共 57 课。

类描述一类对象:它所持有的数据以及它能做什么。class Dog { ... }声明了类型,Dog()会创建该类型的一个对象,也就是一个实例。Kotlin 没有 new 关键字:

class Dog {
    var name = "Rex"
    var age = 3
}

在 main 中:

val dog = Dog()
println(dog.name)
println(dog.age)

输出:

Rex
3

类中的变量是它的属性。每个实例都有自己的副本,可以用点号读取和修改:

class Dog {
    var name = "Rex"
}

在 main 中:

val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)

输出:

Rex
Bella

类中的函数称为方法(Kotlin 称它们为成员函数)。方法可以读取和更改调用它的实例的属性:

class Counter {
    var count = 0

    fun increment() {
        count++
    }

    fun report() = "count is $count"
}

在 main 中:

val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())

输出:

count is 2

类名使用大驼峰命名法(BankAccount);属性和方法使用小驼峰命名法(balance、deposit())。将数据与处理这些数据的函数组合在一起,这是面向对象编程的核心思想:使用 Counter 的代码会调用 increment(),而且不需要知道计数是如何存储的。

class BankAccount {
    var balance = 0

    fun deposit(amount: Int) {
        balance += amount
    }
}
challenge icon

挑战

简单

完成类 Pet 的方法 describe()。它会根据属性生成一个句子:宠物名为 Rex,物种为 dog,年龄为 3 时,结果为 Rex is a 3 year old dog。

提供的代码会创建一个 Pet,根据输入设置它的属性(名称、物种、年龄),并打印 describe() 的结果。

你的代码写在 Pet.kt 中。Main.kt 中包含提供的输入/输出代码,不能编辑。

亲手试试

fun main() {
    // 提供的输入/输出代码:保持原样
    val input = generateSequence(::readLine).toList()
    val pet = Pet()
    pet.name = input[0]
    pet.species = input[1]
    pet.age = input[2].toInt()
    println(pet.describe())
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Kotlin 在线编辑器