Trường công khai và trường riêng tư
Thuộc phần Lập trình hướng đối tượng trong hành trình JavaScript của Coddy. Bài học 18 trên 56.
Trong các lớp JavaScript, chúng ta có thể định nghĩa hai loại trường: công khai và riêng tư.
Các trường công khai có thể được truy cập từ bên ngoài lớp và bất kỳ ai cũng có thể sử dụng.
Tạo một lớp có các trường công khai:
class Student {
name = '';
grade = 0;
constructor(name, grade) {
this.name = name;
this.grade = grade;
}
}Tạo một đối tượng student:
const student = new Student('Alice', 95);Truy cập các trường công khai từ bên ngoài lớp:
console.log(student.name); // Đầu ra: "Alice"
student.grade = 98;
console.log(student.grade); // Đầu ra: 98Thuộc tính riêng tư được ký hiệu bằng biểu tượng # và chỉ có thể được truy cập từ bên trong lớp:
class Student {
name = '';
#grade = 0;
constructor(name, grade) {
this.name = name;
this.#grade = grade;
}
getGrade() {
return this.#grade;
}
updateGrade(newGrade) {
this.#grade = newGrade;
}
}Sử dụng các trường riêng tư:
const student = new Student('Bob', 87);
console.log(student.name); // Đầu ra: "Bob"
// Truy cập trường riêng tư bằng phương thức (method)
console.log(student.getGrade()); // Đầu ra: 87
// Cập nhật trường riêng tư bằng phương thức
student.updateGrade(92);
console.log(student.getGrade()); // Đầu ra: 92
// Dòng này sẽ gây lỗi:
// console.log(student.#grade); // SyntaxErrorThử thách
- Thêm hai thuộc tính vào lớp có tên UserAccount:
- Một thuộc tính công khai
username - Một thuộc tính riêng tư
#password
- Một thuộc tính công khai
- Thêm hàm khởi tạo nhận các tham số
usernamevàpassword
Tự làm thử
import { UserAccount } from './userAccount.js';
// Code kiểm thử, đừng sửa
const user = new UserAccount("alice", "secret123");
console.log(user.username); // Đầu ra phải là "alice"
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
1Đối tượng và từ khóa this
Ôn nhanh: đối tượngThêm phương thức vào đối tượngTìm hiểu từ khóa thisHàm khởi tạoTừ khóa newThử thách ôn tập7Kế thừa và từ khóa extends
Kế thừaQuan hệ "là một"Từ khóa extendsPhương thức super()Kế thừa thuộc tính và phương thứcThử thách ôn tập13Kết hợp hay kế thừa
Quan hệ “có một” và “là một”Những hạn chế của kế thừa nhiều tầngXây dựng đối tượng5Đóng gói và quyền truy cập
Đóng góiTrường công khai và trường riêng tưPhương thức riêng tưThử thách ôn tập8Tổ chức code OOP
Tổ chức các lớp thành module11Dự án: Trình hiển thị hình dạng
Thiết lập: lớp Hình dạng và xuấtKế thừa lớp Hình trònGhi đè và phương thức diện tíchBộ đếm hình dạng tĩnh6Dự án: Tài khoản ngân hàng đơn giản
Lớp BankAccountGửi tiền và rút tiềnSố dư dưới dạng thuộc tính riêng tư9Phương thức và thuộc tính tĩnh
Cấp lớp và cấp instanceThuộc tính tĩnhPhương thức tiện ích tĩnhThử thách ôn tậpTự luyện tập: Trình biên dịch JavaScript online