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:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Tạo lớp Student, kế thừa
từ lớp User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Thêm phương thức hiển thị tên:
typescriptclass 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:
typescriptclass 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:
typescriptlet student: Student = new Student('john');
Sử dụng phương thức để hiển thị tên sinh viên:
typescriptconsole.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:
typescriptconsole.log(student.cape('test')); // lỗi
Cho lớp sau:
typescriptclass 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.