skip to Main Content
Sınıf Metodları

Sınıf Metodları

Her sınıfın bir yapıcı metodu (constructor) vardır.  Siz yeni oluşturduğunuz sınıfta yapıcı metod kullanmasanız bile, Object sınıfından gelen içeriği boş olan bir yapıcı metodu sınıfınıza tanımlanır. Yapıcı metodlar sınıflarda zorunlu olmayan fonksiyonlardır. Örneğin bir araba üretirken onun rengi, adı, modeli vb. özellikleri bellidir. Siz bu arabayı üretirken, bu değerleri ilk üretim sırasında verip arabayı üretmek istersiniz. Bunu yapmak için programlamada yapıcı metodları kullanırsınız. Yapıcı metodlarda sınıfınızdaki değişkenlere başlangıç değerlerini atamak için kullanılan fonksiyonlardır.

// Tanımlama 1
Car(this.name, this.color, this.brand);

// Tanımlama 2
Car(String name, String color, String brand) {
    this.name = name;
    this.color = color;
    this.brand = brand;
}

// Tanımlama 3
Car(this.name); // Tüm değişkenler olmak zorunda değil.
// Kullanım (1-2)
Car car = new Car("Granturismo", "Red", "Maserati"); 
// Dart 2' den sonra new ifadesi isteğe bağlıdır, kullanmayabilirsiniz.

// Kullanım (3)
var car = Car("Granturismo");

Yapıcı metodlar tüm değişkenleri içermek zorunda değildir. Örneğin başlangıçta sadece renk değişkenini atayabilirsiniz. Java, Swift vb. gibi dillerde birden fazla yapıcı metod oluşturabilirsiniz. Fakat dart dilinde bunu yapmak için biraz farklı bir yöntem vardır. Bir sınıf içerisinde, sınıf ismi ile sadece bir tane yapıcı metod oluşturabilirsiniz. Daha fazlasını tanımlarsanız derleyici hata verecektir. Bunun yerine dart dilinde adlandırılmış yapıcı metodlar (named constructor) kullanılmaktadır.

class Car {
   String name;
   String color;
   String brand;

   Car(this.name, this.color);
   Car(this.name, this.color, this.brand); // Hata, çünkü yukarıda bir yapıcı metod tanımlanmıştır.
   // Adlandırılmış yapıcı metod
   Car.paint(this.color); // Başarılı, isimlendirilmiş yapıcı metod kullanılmıştır.
}

// Kullanımı 1
var car = Car("Granturismo", "Red);
// Kullanım 2
var car2 = Car.paint("Red");

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir