定义类
本课属于 Coddy Swift 学习旅程的“面向对象编程”单元。第 2 课,共 57 课。
一个类描述一类对象:每个对象持有的数据,以及它能做什么。class Dog { ... } 声明类型,Dog() 创建该类型的对象,也称为实例:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)输出:
Rex
3类中的变量是它的属性。每个实例都有自己的副本,可以用点号读取和修改:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)输出:
Rex
Bella类中的函数称为方法。方法可以读取和更改调用它的实例的属性:
class Counter {
var count = 0
func increment() {
count += 1
}
func report() -> String {
"count is \(count)"
}
}
let clicks = Counter()
clicks.increment()
clicks.increment()
print(clicks.report())输出:
count is 2类型名称采用大驼峰命名法(BankAccount);属性和方法采用小驼峰命名法(balance、deposit())。将数据和操作这些数据的函数放在同一个类型中,这是面向对象编程的核心思想:使用 Counter 的代码会调用 increment(),无需知道计数是如何存储的。
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}挑战
简单补全类 Pet 的方法 describe()。它会根据属性拼出一个句子:宠物名为 Rex,物种为 dog,年龄为 3 时,结果为 Rex is a 3 year old dog。
提供的代码会创建一个 Pet,根据输入设置它的属性(名称、物种、年龄),并打印 describe() 的结果。
你的代码写在 Pet.swift 中。main.swift 包含提供的输入/输出代码,不能编辑。
亲手试试
// 提供的输入和输出代码:保持原样
var input: [String] = []
while let line = readLine() { input.append(line) }
let pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = Int(input[2])!
print(pet.describe())
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Swift 在线编辑器