CodeBlanks Logo Icon CodeBlanks

private

_ ile private üye öğrenirsin.

private alan

Dart'ta bir alanı private yapmak için adının başına alt çizgi konur: _balance. Bu, kütüphane düzeyinde gizlilik sağlar; aynı kütüphane (dosya) içinden erişilebilir, başka kütüphanelerden erişilemez.

Örnek: class Account { double _balance; Account(this._balance); }. Burada _balance private alandır; Account sınıfının kendi dosyası dışından a._balance biçiminde erişilemez. Dart'ta private anahtar kelimesi yoktur; gizlilik alt çizgi önekiyle başlar. Bu yaklaşım, sınıfın dışarıdan doğrudan değiştirilmesini engeller; erişim metotlar üzerinden yapılır.

Kütüphane düzeyinde gizlilik

Dart'ta private, kütüphane (library) kavramına bağlıdır. Bir kütüphane genellikle tek bir dosyadır; dolayısıyla alt çizgili alanlar aynı dosya içinden erişilebilir, başka dosyalardan erişilemez.

Örnek: account.dart dosyasında _balance alanı tanımlıysa, main.dart dosyasında a._balance yazımı derleme hatası verir. Aynı account.dart içindeki bir metot bu alana serbestçe erişebilir. Bu yüzden Dart'ın private'ı dosya sınırına göre çalışır; sınıf sınırına göre değil. Birden çok dosyayı tek kütüphanede toplamak part yönergesiyle mümkündür; o zaman tüm dosyalar aynı kütüphaneyi paylaşır.

Uygulama Account sınıfına private alan ekle

Account adında bir sınıf tanımla. String _owner private alanını ekle. Account(this._owner) yapıcısını yaz. void show() { print(_owner); } metodunu ekle. main içinde var a = Account('Ayşe'); ile örnek oluştur ve a.show() çağrısı yap.

Başlangıç kodu

main.dart
// Account sınıfını tanımla
// private _owner alanı, yapıcı ve show metodu ekle

void main() {
  // Account('Ayşe') örneğini oluştur ve show() çağır
}

Örnek çözüm

main.dart
// Account sınıfını tanımla
class Account {
  String _owner;
  Account(this._owner);
  void show() {
    print(_owner);
  }
}

void main() {
  var a = Account('Ayşe');
  a.show();
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

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

1 Hangisi Dart'ta private alan gösterimidir?

  • private balance
  • _balance Doğru cevap
  • balance#
  • balance.private

Açıklama: Alt çizgi öneki Dart'ın private işaretidir.

2 private alanı adlandır

Soru
class Account {
  double ____;
  Account(this._balance);
}
Cevap
class Account {
  double _balance;
  Account(this._balance);
}

Açıklama: Alt çizgi öneki alanı private yapar.

3 private parçalarını eşle

Kavram Anlamı
_ Private öneki
_balance Private alan
Account Sınıf adı

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