super Kullanımı
Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 37 / 56.
Bir metodu geçersiz kıldığınızda (override), super.methodName() kullanarak ebeveynin orijinal versiyonuna hâlâ erişebilirsiniz. Bu, ebeveyn davranışını tamamen değiştirmek yerine genişletmenize veya değiştirmenize olanak tanır.
Bir metodu olan bir ebeveyn sınıf oluşturun:
class Animal {
makeSound() {
return "Generic animal sound";
}
}Ebeveyn sınıfı genişleten bir alt sınıf oluşturun:
class Dog extends Animal {
makeSound() {
// Önce ebeveynin metodunu çağırın
const parentSound = super.makeSound();
// Ardından ek işlevsellik ile genişletin
return `${parentSound}, but also Woof!`;
}
}Alt sınıfın bir örneğini oluşturun:
const myDog = new Dog();
console.log(myDog.makeSound());
// Çıktı: "Generic animal sound, but also Woof!"super anahtar kelimesi, alt sınıfa kendi işlevselliğinizi eklemeye devam ederken üst sınıfın metotlarını çağırmanıza olanak tanır.
Görev
Size, bir calculateArea() metoduna sahip bir Shape sınıfı ve onu genişleten (extend eden) bir Rectangle sınıfı verilmiştir. Göreviniz, Rectangle sınıfındaki calculateArea() metodunu super kullanarak geçersiz kılmaktır (override).
Göreviniz, Rectangle sınıfındaki calculateArea() metodunu şu şekilde tamamlamaktır:
superkullanarak üst sınıfıncalculateArea()metodunu çağırın ve sonucu saklayın- Dikdörtgenin gerçek alanını hesaplayın:
width × height - Birleştirilmiş bir dize döndürün: üst sınıfın mesajı + dikdörtgen alanı. Örnek:
Calculating area... Rectangle area: 50
Kopya kağıdı
Geçersiz kılma (overriding) işlemi yaparken üst sınıfın orijinal metoduna erişmek için super.methodName() kullanın:
class Animal {
makeSound() {
return "Generic animal sound";
}
}
class Dog extends Animal {
makeSound() {
const parentSound = super.makeSound();
return `${parentSound}, but also Woof!`;
}
}
const myDog = new Dog();
console.log(myDog.makeSound());
// Çıktı: "Generic animal sound, but also Woof!"Bu, üst sınıfın işlevselliğini tamamen değiştirmek yerine onu genişletmenize olanak tanır.
Kendin dene
import { Shape } from './shapes.js';
import { Rectangle } from './shapes.js';
// Test kodu - değiştirmeyin
const rectangle = new Rectangle(5, 10);
console.log(rectangle.calculateArea()); // Beklenen: "Calculating area... Rectangle area: 50"
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesneler ve this Anahtar Kelimesi
Hızlı Tekrar: NesnelerNesnelere Metot Eklemethis Anahtar Kelimesini AnlamakYapıcı Fonksiyonlarnew Anahtar KelimesiGenel Tekrar Uygulaması7Kalıtım ve extends Anahtar Kelimesi
Kalıtım"is-a" İlişkisiextends Anahtar Kelimesisuper() MetoduÖzellikleri ve Metotları DevralmaÖzet Meydan Okuması10Çok Biçimlilik
Çok Biçimlilik Nedir?Kalıtılan Metotları Geçersiz Kılmasuper KullanımıÖzet Meydan Okuması2Kodu Düzenleme
Modüller Nedir?export ile Dışa Aktarmaimport ile İçe AktarmaVarsayılan ve Adlandırılmış Dışa Aktarmalar8OOP Kodunu Düzenleme
Sınıfları Modüller Halinde Düzenleme6Proje: Basit Bir Banka Hesabı
BankAccount SınıfıPara Yatırma ve Para Çekme9Statik Metotlar ve Özellikler
Sınıf Düzeyi ve Örnek DüzeyiStatik ÖzelliklerStatik Yardımcı MetotlarÖzet Meydan Okuma12Getter ve Setter'lar
get ve set Anahtar KelimeleriHesaplanmış ÖzelliklerDoğrulama ve Yan EtkilerÖzet Meydan Okuması15Final Meydan Okumaları
Oyun Karakteri OluşturucuE-ticaret Ürün SistemiÜniversite Yönetim SistemiAkıllı Ev Cihaz Sistemi