CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Sınıf hiyerarşisi

JavaScript kursu · İleri seviye · Ders 96/100

Sınıf, extends, super ve static ile bir çalışan-yönetici hiyerarşisi yazarsın.

Sınıf hiyerarşisi

Bu meydan okumada bir çalışan-yönetici hiyerarşisi kuracaksın. Önce class ile bir Employee sınıfı tanımlarsın; yapıcısı name alır ve this.name'e atar.

Sonra Manager sınıfını extends Employee ile türetirsin. Türetilmiş sınıfın yapıcısında super(name) çağrısı üst sınıfın yapıcısını çalıştırır; bunu this kullanmadan önce yapmalısın.

Son olarak static anahtar kelimesiyle sınıfa ait bir yöntem eklersin — bu yöntem örneklere değil sınıfın kendisine bağlıdır.

Uygulama Employee ve Manager sınıflarını yaz

Bir Employee sınıfı yaz: yapıcısı name alır ve this.name'e atar. Sonra Manager sınıfını extends Employee ile türet; yapıcısı name ve dept alır, super(name) ile üst yapıcıyı çağırır ve this.dept'e atar. Son olarak Manager'a static bir yöntem ekle.

Örnek çözümü göster
class Employee { constructor(name) { this.name = name; } } ile başla. Sonra class Manager extends Employee { constructor(name, dept) { super(name); this.dept = dept; } static create(name) { return new Manager(name, 'Genel'); } } yaz.

Örnek çözüm:
class Employee {
  constructor(name) {
    this.name = name;
  }
}

class Manager extends Employee {
  constructor(name, dept) {
    super(name);
    this.dept = dept;
  }
  static create(name) {
    return new Manager(name, 'Genel');
  }
}

Kendini test et

  1. super(name) çağrısı ne yapar?

    class Manager extends Employee {
      constructor(name, dept) {
        super(name);
        this.dept = dept;
      }
    }
    • Alt sınıfın yapıcısını çağırır
    • Üst sınıfın yapıcısını çağırır
    • Statik bir yöntem tanımlar
    • Yeni bir örnek oluşturur
    Cevabı göster

    Üst sınıfın yapıcısını çağırır — Doğru! super(name) üst sınıfın yapıcısını çalıştırır ve this'i hazır hale getirir.

  2. Manager sınıfını türet

    class Manager ____ {
      constructor(name, dept) {
        super(name);
        this.dept = dept;
      }
    }
    Cevabı göster
    class Manager extends Employee {
      constructor(name, dept) {
        super(name);
        this.dept = dept;
      }
    }
  3. Sınıf kavramlarını eşleştir

    extends
    Alt sınıf bildirimi
    super(...)
    Üst sınıf yapıcısı
    static
    Sınıfa ait yöntem
    class
    Sınıf bildirimi

İleri seviye bölümündeki tüm dersler