Định nghĩa lớp
Thuộc phần Lập trình hướng đối tượng trong hành trình Swift của Coddy. Bài học 2 trên 57.
Một lớp mô tả một loại đối tượng: dữ liệu mà mỗi đối tượng lưu giữ và những gì nó có thể làm. class Dog { ... } khai báo kiểu, còn Dog() tạo một đối tượng thuộc kiểu đó, cũng gọi là một instance:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Đầu ra:
Rex
3Các biến bên trong một lớp là thuộc tính của lớp đó. Mỗi đối tượng có bản sao riêng, có thể đọc và thay đổi bằng dấu chấm:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Đầu ra:
Rex
BellaMột hàm bên trong một lớp là một phương thức (method). Phương thức có thể đọc và thay đổi các thuộc tính của instance mà nó được gọi trên đó:
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())Đầu ra:
count is 2Tên kiểu được viết theo dạng UpperCamelCase (BankAccount); thuộc tính và phương thức được viết theo dạng lowerCamelCase (balance, deposit()). Gộp dữ liệu và các hàm thao tác trên dữ liệu vào cùng một kiểu là ý tưởng cốt lõi của lập trình hướng đối tượng: code sử dụng Counter gọi increment() và không cần biết cách lưu số đếm.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Thử thách
DễHoàn thiện phương thức describe() của lớp Pet. Phương thức này trả về một câu được tạo từ các thuộc tính: thú cưng tên Rex, loài dog, tuổi 3 sẽ cho ra Rex is a 3 year old dog.
Code được cung cấp tạo một đối tượng Pet, đặt các thuộc tính của đối tượng từ đầu vào (tên, loài, tuổi) rồi in ra kết quả của describe().
Code của bạn nằm trong Pet.swift. main.swift chứa code đầu vào/đầu ra được cung cấp và không thể chỉnh sửa.
Tự làm thử
// Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
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())
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Lớp và đối tượng
Làm việc với tệpĐịnh nghĩa lớpPhương thức và selfHàm khởi tạoLớp là tham chiếuÔn tập: Thẻ thư viện2Struct và kiểu giá trị
StructNgữ nghĩa giá trịPhương thức thay đổiStruct hay classÔn tập: mặt hàng trong kho5Kế thừa
Lớp conGhi đè phương thứcHàm khởi tạo và superfinal và hệ phân cấpÔn tập: hệ phân cấp nhân viên8Các giao thức tiêu chuẩn
CustomStringConvertibleEquatableComparableHashableÔn tập: Sắp xếp tùy chỉnhTự luyện tập: Playground Swift