protected
- TypeScript kursu
- Orta seviye
- Ders 8/89
- 4 dk
protected ile alt sınıf erişimini öğrenirsin.
protected nedir?
protected, bir üyenin sınıfın kendisi ve alt sınıfları (extends ile türeyen) içinde erişilebilir olduğunu belirtir. private gibi dışarıdan kapalıdır ama alt sınıfa açıktır.
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
bark(): string {
return this.name + " havlıyor";
}
}
const d = new Dog("Rex");
console.log(d.bark());private vs protected
private yalnızca tanımlandığı sınıfta erişilebilir; alt sınıfta bile erişilemez. protected ise hem tanımlandığı sınıfta hem de alt sınıflarda erişilebilir. Dışarıdan ikisi de kapalıdır.
class Base {
private secret: number = 1;
protected shared: number = 2;
}
class Child extends Base {
access(): number {
// this.secret; // hata
return this.shared;
}
}Uygulama Animal ve Dog sınıfları yaz
Animal sınıfını tanımla: protected name: string alanı ve constructor ile. Dog sınıfı Animal'ı extends etsin ve bark(): string metodu ekle: this.name + " havlıyor" döndür. Yeni bir Dog("Rex") oluştur ve bark() çağır.
Başlangıç kodu
// Animal sınıfı tanımla (korunan isim alanı, constructor ile al)
// Dog sınıfı Animal'ı genişletsin
// Dog'a bark metodu ekle, isim + " havlıyor" döndür
// yeni Dog oluştur, bark çağırÖrnek çözüm
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
bark(): string {
return this.name + " havlıyor";
}
}
const d = new Dog("Rex");
console.log(d.bark());Beklenen çıktı
Rex havlıyor
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 protected bir alana alt sınıftan erişilebilir mi?
- Yalnızca statik metottan
- Hayır, hiçbir yerden
- Yalnızca aynı dosyadan
- Evet, alt sınıftan erişilir Doğru cevap
Açıklama: protected, sınıfın kendisi ve alt sınıfları (extends ile türeyen) içinden erişilebilir. private ise yalnızca sınıfın kendisinden; alt sınıftan erişilemez.
2 protected belirtecini tamamla
class Animal {
____ name: string;
}
class Animal {
protected name: string;
}
Açıklama: name alanının alt sınıflardan da erişilebilmesini istediğin için protected yazmalısın. public dışarıya açar, private alt sınıfa kapatır, static ise sınıf düzeyine taşır.
3 protected parçaları
| Kavram | Anlamı |
|---|---|
protected |
Sınıf ve alt sınıftan erişilir |
extends Animal |
Alt sınıf tanımı |
class Dog |
Alt sınıf |
private |
Alt sınıfta erişilemez |