TypeScript'te protected Değiştiricisi
Özel (private) özellikler ve metodlar alt sınıflar
tarafından kalıtımla alınmaz. Ancak bazen, bir
özelliğin veya metodun dışarıdan erişilemez olmasını
ama alt sınıflar tarafından miras alınabilmesini
isteriz. Bu durumda protected değiştiricisi
kullanılmalıdır.
Pratikte deneyelim. User sınıfımızda
cape metodunu protected değiştiricisi
kullanarak korumalı olarak tanımlayalım:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
User sınıfından miras alan Student
sınıfını oluşturalım:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
İsmi gösteren bir metod ekleyelim:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Şimdi, üst sınıfın korumalı metodunu alt sınıfın metodu içinde kullanalım:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // üst sınıfın metodunu kullanıyoruz
}
}
Sınıfımızın bir nesnesini oluşturalım:
typescriptlet student: Student = new Student('john');
Öğrenciyi göstermek için metodu kullanalım:
typescriptconsole.log(student.showName());
Ancak cape metodunu sınıf dışından çağırmaya
çalışmak bir hataya yol açacaktır:
typescriptconsole.log(student.cape('test')); // hata
Aşağıdaki sınıf verilmiştir:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Bu sınıftan, hem kendi hem de miras alınan
tüm özellikler için getter'ların yanı sıra
korumalı bir salary özelliği ekleyen
Employee sınıfını türetin.