Dart Dilinde static Anahtar Kelimesi Kullanımı
Dart dilinde static anahtar sözcüğü, global veri üyelerinin bellek yönetimi için kullanılır. Ayrıca static anahtar kelimesi, bir sınıfın değişkenlerine ve metotlarına uygulanabilir.
Dart Dilinde static Anahtar Kelimesi
Static değişkenler ve metotlar, belirli bir nesne (object) yerine sınıfın parçasıdır. Bu yüzden static anahtar sözcüğü sayesinde, bir sınıfın sahip olduğu verilerin farklı nesneleri arasındaki değerleri kalıcı hale getirmesine olanak tanır.
Sınıfa bağlı değişken ve metotları static anahtar kelimesiyle tanımlanmışsa bu değişken veya metotlara erişmek için ilgili sınıfın nesnesini oluşturmaya gerek yoktur. Bunun yerine ilgili değişkenin veya metotun adının yazılması yeterlidir.
Peki bunu niye kullanıyoruz diye sorulabilir aslında bir sınıf oluşturulduğunda ilgili sınıf içindeki tanımlanan değişkenler ve metotlar o sınıftan her yeni nesne oluşturulduğunda sınıfın var olan ilk hali gibi yaratılırlar. Ancak sınıfın bir üyesi static olarak bildirildiğinde, sınıfının nesneleri oluşturulmadan önce ve herhangi bir nesne referansı olmadan ona erişilebilir.
Yani özetle static olmayan sınıf üyelerine sadece o sınıfa ait nesne aracılığıyla erişebilirken static sınıf üyelerine nesne oluşturmaya gerek kalmadan sınıf dışından veya sınıf içi diğer üyeler tarafından erişilebilir.
Aşağıdaki Dart dilinde static anahtar kelimesi ile alakalı örnek bir program kodlanmıştır:
main() {
//statik olmayan sınıf üyelerine erişim
Kare kare = Kare ();
print ("Karenin kenar uzunluğu: ${kare.kenar}"); //statik olmayan değişkene nesne ile erişilir
kare.alan(8); //bu nesnenin bir parametresi oluyoe
//statik olan sınıf üyelerine erişim
print ("Pi'nin değeri: ${Daire.pi}"); //statik değişkene sınıf ile erişilir
Daire.alan(4); // bu sınıfın bir parametresi oluyo
//yine statik olmayan bir üyeye erişim
Daire daireninCevresi = Daire ();
daireninCevresi.cevre(12);
}
class Kare {
// kenar değişkeni örnek değişken olarak kullanılıyor
int kenar = 5;
void alan (num kenar) {
print ("Karenin alanı: ${kenar*kenar}");
}
}
class Daire {
//pi değişkeni sınıf değişkeni olarak kullanılıyor
static num pi = 3.14;
// alan metodu sınıf metodu olarak kullanılıyor
//statik olan metotlarda statik olmayan değişkenler kullanılamaz
static void alan (num yariCap) {
print ("Dairenin alanı: ${pi*yariCap*yariCap}");
}
// cevre metodu ise örnek metot olarak kullanılıyor.
// static olmayan metotlarda statik değişkenler kullanılabilir
void cevre(num yariCap) {
print ("Bu bir statik olmayan metot");
print ("Statik olmayan metot içinde statik değişken kullanılabilir.");
print ("Dairenin çevresi: ${2*pi*yariCap}");
}
}
Çıktı:
Karenin kenar uzunluğu: 5
Karenin alanı: 64
Pi’nin değeri: 3.14
Dairenin alanı: 50.24
Bu bir statik olmayan metot
Statik olmayan metot içinde statik değişken kullanılabilir.
Dairenin çevresi: 75.36
Kodu çalıştırmak için: DartPad
Yukarıdaki anlattıklarımızı özetleyecek olursak:
- Statik metotlar, Sınıf Metotları olarak da bilinir.
- Statik metotlara yalnızca sınıfın statik değişkenlerine erişmesine izin verilir.
- Statik metodun tek bir kopyası, bir sınıfın tüm örnekleri arasında paylaşılır.
- Statik metotlarda nesne ile değil doğrudan sınıf adı kullanılarak erişilebilir.