CodeBlanks Logo Icon CodeBlanks

private

private ile sınıf içi üyeleri öğrenirsin.

private nedir?

private, bir üyenin yalnızca sınıfın kendi içinde erişilebilir olduğunu belirtir. Sınıf dışından erişmeye çalışırsan derleme hatası alırsın. Bu, kapsülleme (encapsulation) için temel araçtır.

class Account {
  private balance: number;
  constructor(balance: number) {
    this.balance = balance;
  }
  getBalance(): number {
    return this.balance;
  }
}
const a = new Account(100);
// a.balance;  // hata
console.log(a.getBalance());

Encapsulation

private ile iç durumu gizlersin; dışarıdan yalnızca metotlar üzerinden erişilir. Bu, sınıfın içindeki tutarlılığı korur ve dış kodun doğrudan değişiklik yapmasını engeller.

class Account {
  private balance: number = 0;
  deposit(amount: number): void {
    this.balance += amount;
  }
}

Uygulama private alanlı Account sınıfı

Account sınıfını tanımla: private balance: number alanı ile. constructor ile balance parametresini al ve this ile ata. getBalance(): number metodu yaz: this.balance döndür. Yeni bir Account(100) oluştur ve getBalance() çağır.

Başlangıç kodu

index.ts
// Account sınıfı tanımla (gizli bakiye alanı)
// constructor ile balance al
// getBalance metodu bakiyeyi döndürür
// yeni Account oluştur, getBalance çağır

Örnek çözüm

index.ts
class Account {
  private balance: number;
  constructor(balance: number) {
    this.balance = balance;
  }
  getBalance(): number {
    return this.balance;
  }
}

const a = new Account(100);
console.log(a.getBalance());

Beklenen çıktı

100

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 private bir alana sınıf dışından erişmeye çalışırsan ne olur?

  • Çalışma anı hatası
  • Undefined döner
  • Derleme hatası Doğru cevap
  • Çalışır

Açıklama: private alana sınıf dışından erişim derleme anında hata verir. Bu, kapsüllemeyi derleme zamanında zorlar; çalışma anına kadar beklenmez.

2 private belirtecini tamamla

Soru
class Account {
  ____ balance: number = 0;
}
Cevap
class Account {
  private balance: number = 0;
}

Açıklama: balance alanının yalnızca sınıf içinden erişilmesini istediğin için private yazmalısın. public dışarıya açar, protected alt sınıflara açar, static ise sınıf düzeyine taşır.

3 private parçaları

Kavram Anlamı
private Yalnız sınıf içinden erişilir
this.balance Sınıf içinden erişim
a.balance Dışarıdan erişim (hata)
getBalance() Public erişim metodu

Orta seviye bölümündeki tüm dersler