Sınıf kalıtımı
TeaOrder, Order sınıfının ortak işini devralır; çay siparişine özgü extra ayrıntısını bunun üzerine ekler.
Çerezden nesneye
Önceki sayfanın satırı theme / dark idi. Bu derste tarayıcıya metin yazmak yerine bellekte nesne üretiyoruz.
Ebeveynin ortak görevi
Order, drink ve size alır. label metodu bütün siparişlerin kullanabileceği iki parçalı metni kurar.
class Order {
constructor(drink, size) {
this.drink = drink;
this.size = size;
}
label() {
return this.drink + " / " + this.size;
}
}
const order = new Order("tea", "regular");
console.log(order.label());
Konsolda tea / regular görülür. order instanceof Order doğrudur; metot her nesneye kopyalanmaz, prototype üzerinde paylaşılır.
Çocuk önce temeli kurar
extends Order kalıtımı tanımlar. Çocuk constructor kendi alanına geçmeden önce ebeveyn bölümünü hazırlar.
class Order {
constructor(drink, size) {
this.drink = drink;
this.size = size;
}
label() {
return this.drink + " / " + this.size;
}
}
class TeaOrder extends Order {
constructor(drink, size, extra) {
super(drink, size);
this.extra = extra;
}
}
const tea = new TeaOrder("tea", "regular", "mint");
console.log(tea.drink);
console.log(tea.extra);
tea, ardından mint yazılır. super çağrısından önce this.extra kullanmak ReferenceError üretir.
Kopyalamadan değiştirmek
TeaOrder, label metodunu geçersiz kılabilir. super.label() içecek ve boyut kısmını hazır verir.
class Order {
constructor(drink, size) {
this.drink = drink;
this.size = size;
}
label() {
return this.drink + " / " + this.size;
}
}
class TeaOrder extends Order {
constructor(drink, size, extra) {
super(drink, size);
this.extra = extra;
}
label() {
return super.label() + " / " + this.extra;
}
}
console.log(new TeaOrder("tea", "regular", "mint").label());
Sonuç tea / regular / mint olur. Bu nesne hem instanceof TeaOrder hem de instanceof Order sayılır.
Küçük bir aile
Order her siparişin ihtiyacını taşır; TeaOrder yalnızca çaya ait bilgiyi ekler. Sadece adı değiştirmek için çocuk sınıf açmayın.
Sayfadaki satır
Örnek TeaOrder oluşturur ve geçersiz kılınmış etiketi belgeye yazar.
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
class Order {
constructor(drink, size) {
this.drink = drink;
this.size = size;
}
label() {
return this.drink + " / " + this.size;
}
}
class TeaOrder extends Order {
constructor(drink, size, extra) {
super(drink, size);
this.extra = extra;
}
label() {
return super.label() + " / " + this.extra;
}
}
document.querySelector("#line").textContent =
new TeaOrder("tea", "regular", "mint").label();
</script>
</body>
</html>
Sayfada tea / regular / mint vardır. theme / dark çerez örneğindendi; tea / regular ise ebeveynin satırıydı.
Akışı deneyin
Önce Order, sonra mint ile TeaOrder kurun. this.extra öncesine super koyun ve super.label() sonucunu genişletin.
Sık hatalar
super öncesinde this kullanmayın, ebeveyn etiketini baştan yazmayın ve çocuğun hâlâ Order olduğunu unutmayın.
Özet
extends sınıfları bağlar; super(...) ebeveyn kısmını kurar; override yalnızca kendi ayrıntısını ekler.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek