Trình sửa đổi protected trong TypeScript
Các thuộc tính và phương thức riêng tư không được kế thừa
bởi các lớp con. Tuy nhiên, đôi khi chúng ta cần
một thuộc tính hoặc phương thức không thể truy cập từ bên ngoài,
nhưng lại được kế thừa bởi các lớp con. Trong trường hợp này
nên sử dụng trình sửa đổi
protected.
Hãy thử thực hành. Hãy khai báo trong
lớp User của chúng ta một phương thức cape
là được bảo vệ bằng cách sử dụng trình sửa đổi protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Tạo lớp Student, kế thừa
từ lớp User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Thêm phương thức hiển thị tên:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Và bây giờ sử dụng phương thức được bảo vệ của lớp cha bên trong phương thức của lớp con:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // sử dụng phương thức của lớp cha
}
}
Tạo một đối tượng của lớp chúng ta:
let student: Student = new Student('john');
Sử dụng phương thức để hiển thị tên sinh viên:
console.log(student.showName());
Nhưng nếu cố gắng gọi phương thức cape
từ bên ngoài lớp sẽ dẫn đến lỗi:
console.log(student.cape('test')); // lỗi
Cho lớp sau:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Hãy kế thừa từ lớp này một lớp Employee,
lớp này sẽ thêm một thuộc tính được bảo vệ salary,
cũng như các getter cho tất cả các thuộc tính, cả của chính nó
và cả những thuộc tính được kế thừa.