Menu
Coddy logo textTech

super() Metodu

Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 27 / 56.

super() metodu, üst sınıfın constructor'ını kullanarak nesneyi oluşturur ve başlatır. Alt sınıfa herhangi bir özellik eklemeden önce çağrılmalıdır.

Şöyle düşünün: üst sınıf nesnenin temelini oluşturur ve super(), alt sınıf kendi özelliklerini eklemeden önce "önce o temeli oluştur" der.

Örneğe bir göz atalım. Bir ebeveyn sınıf oluşturun:

class Employee {
  constructor(name) {
    this.name = name;
  }
}

Şimdi üst sınıfı genişleten bir alt sınıf oluşturun:

class Manager extends Employee {
  constructor(name, department) {
    super(name); // Üst sınıf yapıcısını name ile çağırın
    this.department = department;
  }
}

Burada neler oluyor:

  1. constructor(name, department) - Manager hem name hem de department'a ihtiyaç duyar
  2. super(name) - name bilgisini Employee'nin constructor'ına iletir
  1. this.department - Manager'ın benzersiz özelliğini ayarlar

Bu, hem kalıtım yoluyla alınan özelliklere (name) hem de kendi özelliklerine (department) sahip bir Manager oluşturur!

Alt sınıfın bir örneğini oluşturun:

const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name);      // "Sarah"
console.log(myManager.department); // "Engineering"

Türetilmiş bir sınıfın constructor'ında this kullanmadan önce super() metodu çağrılmalıdır. Eğer super() çağırmazsanız, JavaScript bir referans hatası fırlatacaktır.

challenge icon

Görev

Meal sınıfını genişleten bir Salad sınıfı verilmiştir. Salad hem bir name hem de ingredients özelliğine sahip olmalıdır.

Göreviniz, Salad sınıfı constructor'ını aşağıdakileri yaparak tamamlamaktır:

  1. name özelliği ile super() fonksiyonunu çağırmak
  2. ingredients özelliğini atamak

Kopya kağıdı

super() yöntemi, üst sınıfın yapıcısını (constructor) kullanarak nesneyi oluşturur ve başlatır. Alt sınıfa herhangi bir özellik eklemeden önce çağrılması gerekir.

Bir alt sınıfta super() kullanımına örnek:

class Employee {
  constructor(name) {
    this.name = name;
  }
}

class Manager extends Employee {
  constructor(name, department) {
    super(name); // Önce üst sınıf yapıcısını çağır
    this.department = department; // Sonra alt sınıf özelliklerini ekle
  }
}

const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name);      // "Sarah"
console.log(myManager.department); // "Engineering"

Önemli noktalar:

  • Alt sınıf yapıcısında this kullanılmadan önce super() çağrılmalıdır
  • Gerekli argümanları alt sınıftan üst sınıf yapıcısına aktarın
  • super() çağrılmazsa JavaScript bir referans hatası (reference error) fırlatacaktır

Kendin dene

import { Meal } from './classes.js';
import { Salad } from './classes.js';

// Test kodu - değiştirmeyin
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name);       // "Caesar" çıktısını vermeli
console.log(salad.ingredients); // ["lettuce", "croutons", "cheese"] çıktısını vermeli
quiz iconKendini test et

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