CodeBlanks Logo Icon CodeBlanks

Named constructor

Named constructor ile birden çok yapıcı öğrenirsin.

Named constructor

Bir named constructor, sınıf ismine nokta ve bir isim eklenerek yazılır: Point.origin(). Bu yapı, aynı sınıf için farklı başlatma biçimleri sunar; aşırı yükleme Dart'ta bu yolla yapılır.

Örnek: class Point { double x, y; Point(this.x, this.y); Point.origin() : x = 0, y = 0; }. Burada Point.origin() herhangi bir parametre almadan ikisini de sıfıra ayarlar. Çağrı Point.origin() biçimindedir; default constructor Point(3, 4) ile yan yana kullanılabilir. Named constructor'lar sınıf başına istenildiği kadar yazılabilir.

Birden çok named constructor

Aynı sınıfta birden çok named constructor yan yana durabilir. Her biri farklı bir başlatma senaryosu sunar; çağrı hangi ismi kullanırsa o çalışır.

Örnek: bir Temperature sınıfı hem Celsius hem Fahrenheit ile başlatılabilir: Temperature.celsius(this.c) ve Temperature.fahrenheit(double f) : c = (f - 32) * 5 / 9. Kullanıcı hangi birimi elinde tutuyorsa o yapıcıyı çağırır. Default constructor kullanılmazsa hiç yazılmayabilir; named constructor'lar tek başlarına da sınıfı kurabilir.

Uygulama Point.origin() yapıcısını ekle

Var olan Point sınıfını koru. Sınıfa Point.origin() : x = 0, y = 0; named constructor'ını ekle. main içinde var p = Point.origin(); ile örnek oluştur ve print(p.x) ile x alanını yazdır.

Başlangıç kodu

main.dart
class Point {
  double x, y;
  Point(this.x, this.y);
  // Point.origin() named constructor'ını ekle
}

void main() {
  // Point.origin() örneğini oluştur ve p.x yazdır
}

Örnek çözüm

main.dart
class Point {
  double x, y;
  Point(this.x, this.y);
  Point.origin() : x = 0, y = 0;
}

void main() {
  var p = Point.origin();
  print(p.x);
}

Beklenen çıktı

0.0

Soru ve cevaplar

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

1 Named constructor ismini tamamla

Soru
class Point {
  double x, y;
  Point(this.x, this.y);
  Point.____() : x = 0, y = 0;
}
Cevap
class Point {
  double x, y;
  Point(this.x, this.y);
  Point.origin() : x = 0, y = 0;
}

Açıklama: Named constructor ismi küçük harfle başlar; noktadan sonra yazılır.

2 Point.origin() ne zaman kullanılır?

  • Sınıfın herhangi bir örneğini silmek için
  • Parametresiz, (0, 0) noktası için özel bir başlatma yapmak için Doğru cevap
  • Default constructor'ı değiştirmek için
  • Sınıfı soyut hale getirmek için

Açıklama: Point.origin() özel bir başlatma sunar; parametre almadan alanları sıfıra ayarlar.

3 Named constructor parçalarını eşle

Kavram Anlamı
Point Sınıf ismi
origin Yapıcı ismi
: x = 0, y = 0 Initializer list

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