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:
class 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:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
İsmi gösteren bir metod ekleyelim:
class 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:
class 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:
let student: Student = new Student('john');
Öğrenciyi göstermek için metodu kullanalım:
console.log(student.showName());
Ancak cape metodunu sınıf dışından çağırmaya
çalışmak bir hataya yol açacaktır:
console.log(student.cape('test')); // hata
Aşağıdaki sınıf verilmiştir:
class 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.