Classes (OOP): JavaScript'te Sınıf Yapısı ve Kalıtım

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

1. Sınıf (Class) Nedir?​


Sınıfı bir mimari plan veya bir kalıp gibi düşünebilirsiniz. Tek başına bir ev değildir, ama bir evin nasıl inşa edileceğine dair tüm kuralları (özellikler ve davranışlar) içerir. Bu kalıptan üretilen her bir somut örneğe ise Nesne (Object) veya Instance denir.

JavaScript:
class Araba {
// Nesne oluşturulduğunda ilk çalışan bölüm: Constructor
constructor(marka, model, yil) {
this.marka = marka; // Özellik (Property)
this.model = model;
this.yil = yil;
}

// Davranış (Method)
ozetBilgi() {
    return `${this.yil} model ${this.marka} ${this.model}`;
}

}

// Kalıptan yeni bir nesne türetelim
const arabam = new Araba("Tesla", "Model 3", 2023);
console.log(arabam.ozetBilgi()); // 2023 model Tesla Model 3

2. Kalıtım (Inheritance)​


Kalıtım, bir sınıfın özelliklerini ve metodlarını başka bir sınıfa aktarmasını sağlar. Bu, kod tekrarını önlemenin en güçlü yoludur. extends anahtar kelimesiyle yapılır.


  • []Parent (Ebeveyn) Sınıf: Genel özellikleri tutar.
    []Child (Çocuk) Sınıf: Ebeveynden her şeyi miras alır ve kendine has özellikler ekler.
  • super(): Üst sınıfın constructor'ını çağırmak için kullanılır.

JavaScript:
class Hayvan {
constructor(ad) {
this.ad = ad;
}
sesCikar() {
console.log(${this.ad} ses çıkarıyor.);
}
}

class Kopek extends Hayvan {
constructor(ad, cins) {
super(ad); // Üst sınıfın (Hayvan) constructor'ını çalıştırır
this.cins = cins;
}

// Metod Ezme (Method Overriding)
sesCikar() {
    console.log(`${this.ad} havlıyor!`);
}

}

const boncuk = new Kopek("Boncuk", "Golden");
boncuk.sesCikar(); // Boncuk havlıyor!

3. Getters ve Setters​


Bazen bir özelliğe erişirken veya onu değiştirirken araya bir kontrol mekanizması koymak isteriz. Bunun için get ve set anahtar kelimelerini kullanırız.

JavaScript:
class Kullanici {
constructor(ad) {
this._ad = ad; // _ işareti genellikle "özel/gizli" olduğunu belirtmek için kullanılır
}

get ad() {
    return this._ad.toUpperCase(); // Adı hep büyük harfle al
}

set ad(yeniAd) {
    if (yeniAd.length < 3) {
        console.error("İsim çok kısa!");
        return;
    }
    this._ad = yeniAd;
}

}

4. Statik Metodlar (Static Methods)​


Bir metodun nesneye değil, doğrudan sınıfın kendisine ait olmasını istiyorsak static kullanırız. Bu metodlara new ile oluşturulan nesneler üzerinden değil, direkt sınıf ismiyle erişilir.

JavaScript:
class Matematik {
static topla(a, b) {
return a + b;
}
}

console.log(Matematik.topla(10, 20)); // Nesne oluşturmadan kullandık

OOP'nin 4 Temel Taşı​


TerimAçıklama
Kapsülleme (Encapsulation)Veriyi ve metodları bir arada tutup, dışarıdan erişimi kısıtlama.
Soyutlama (Abstraction)Sadece gerekli olan detayları gösterip karmaşıklığı gizleme.
Kalıtım (Inheritance)Bir sınıfın başka bir sınıfın özelliklerini devralması.
Çok Biçimlilik (Polymorphism)Aynı isimli metodun farklı sınıflarda farklı işler yapması.



Sonuç

Sınıflar ve OOP yapısı, spagetti koda dönüşmeye meyilli büyük projeleri bir mimar titizliğiyle inşa etmenizi sağlar. Başlarda biraz "fazla kuralcı" gelse de, projeniz büyüdükçe bu yapının sağladığı düzen ve hata yönetimi koltuğunuzu sağlamlaştıracaktır.
 
Geri
Üst