private
- Dart kursu
- Orta seviye
- Ders 18/116
- 5 dk
_ 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
// 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
// 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
class Account {
double ____;
Account(this._balance);
}
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ı |