Định nghĩa lớp
Thuộc phần Lập trình hướng đối tượng trong hành trình Kotlin 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à nó lưu giữ và những việc nó có thể làm. class Dog { ... } khai báo kiểu dữ liệu, còn Dog() tạo một đối tượng thuộc kiểu đó, gọi là một instance. Kotlin không có từ khóa new:
class Dog {
var name = "Rex"
var age = 3
}Bên trong main:
val dog = Dog()
println(dog.name)
println(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, bạn đọc và thay đổi thuộc tính bằng dấu chấm:
class Dog {
var name = "Rex"
}Bên trong main:
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)Đầu ra:
Rex
BellaHàm bên trong một lớp là một phương thức (Kotlin gọi chúng là hàm thành viên). Phương thức có thể đọc và thay đổi các thuộc tính của đối tượng mà nó được gọi trên đó:
class Counter {
var count = 0
fun increment() {
count++
}
fun report() = "count is $count"
}Bên trong main:
val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())Đầu ra:
count is 2Tên lớp dùng kiểu UpperCamelCase (BankAccount); thuộc tính và phương thức dùng kiểu lowerCamelCase (balance, deposit()). Gom dữ liệu cùng với các hàm xử lý dữ liệu đó là ý tưởng cốt lõi của lập trình hướng đối tượng: code sử dụng Counter sẽ gọi increment() và không cần biết cách lưu số đếm.
class BankAccount {
var balance = 0
fun 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 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 cho ra Rex is a 3 year old dog.
Code được cung cấp tạo một Pet, thiết lập các thuộc tính từ đầu vào (tên, loài, tuổi) và in ra kết quả của describe().
Code của bạn nằm trong Pet.kt. Main.kt chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.
Tự làm thử
fun main() {
// Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
val input = generateSequence(::readLine).toList()
val pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = input[2].toInt()
println(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ớpHàm khởi tạo chínhKhối init và kiểm tra tính hợp lệHàm khởi tạo phụÔn tập: thẻ thư viện4Kế thừa
Lớp mở và lớp conGhi đè thành viênsuper và hàm khởi tạoLớp trừu tượngÔn tập: Danh bạ nhân viên2Thuộc tính và tính đóng gói
Trình truy cập tùy chỉnhBộ sửa đổi phạm vi truy cậpSetter riêng tưlazy và lateinitÔn tập: tài khoản ngân hàng5Giao diện
Khai báo giao diệnPhương thức mặc địnhNhiều giao diệnGiao diện như kiểu dữ liệuÔn tập: Phương thức thanh toánTự luyện tập: Playground Kotlin