Menu
Coddy logo textTech

Özellikleri ve Metotları Devralma

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

Bir sınıf başka bir sınıfı genişlettiğinde, üst sınıftaki tüm özellikleri ve yöntemleri miras alır. Bu, alt sınıfların üst sınıfta tanımlanan her şeye otomatik olarak erişebileceği anlamına gelir.

Özellikleri ve metotları olan bir ebeveyn sınıf oluşturalım:

class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  eat() {
    return `${this.name} is eating`;
  }
  
  sleep() {
    return `${this.name} is sleeping`;
  }
}

Şimdi, Animal sınıfından miras alan bir alt sınıf oluşturalım:

class Dog extends Animal {
  constructor(name, age, breed) {
    super(name, age);
    this.breed = breed;
  }
}

Dog sınıfından bir örnek oluşturun:

const rex = new Dog("Rex", 3, "German Shepherd");

Şimdi, Dog sınıfında eat() ve sleep() metodlarını tanımlamamış olsak bile, bu metodları hala kullanabiliriz:

console.log(rex.eat());  // Çıktı: Rex is eating
console.log(rex.sleep()); // Çıktı: Rex is sleeping

Ve miras alınan tüm özelliklere erişebiliriz:

console.log(rex.name);  // Çıktı: Rex
console.log(rex.age);   // Çıktı: 3
console.log(rex.breed); // Çıktı: German Shepherd
challenge icon

Görev

Dessert sınıfını genişleten bir Cake sınıfı oluşturun ve bunu dışa aktarın. Cake şunlara sahip olmalıdır:

  • Dessert sınıfından miras alınan tüm özellikler ve yöntemler
  • Yeni bir flavor özelliği
  • “Added candles to ${this.name}!” dizesini döndüren yeni bir addCandles() yöntemi

Kopya kağıdı

Alt sınıflar, extends anahtar kelimesini kullanarak tüm özellikleri ve metotları üst sınıflarından miras alır:

class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  eat() {
    return `${this.name} is eating`;
  }
  
  sleep() {
    return `${this.name} is sleeping`;
  }
}

class Dog extends Animal {
  constructor(name, age, breed) {
    super(name, age);
    this.breed = breed;
  }
}

const rex = new Dog("Rex", 3, "German Shepherd");
console.log(rex.eat());  // Rex is eating
console.log(rex.name);   // Rex
console.log(rex.breed);  // German Shepherd

Alt sınıf, miras alınan tüm özelliklere ve metotlara, onları yeniden tanımlamaya gerek kalmadan erişebilir.

Kendin dene

import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';

// Test kodu - değiştirmeyin
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe());   // Çıktı "Birthday Cake has 300 calories" olmalı
console.log(myCake.flavor);       // Çıktı "Chocolate" olmalı
console.log(myCake.addCandles()); // Çıktı "Added candles to Birthday Cake!" olmalı
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