Dart
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.
Örnek çözümü göster
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);
}
Kendini test et
-
Named constructor ismini tamamla
class Point {
double x, y;
Point(this.x, this.y);
Point.____() : x = 0, y = 0;
}
Cevabı göster
class Point {
double x, y;
Point(this.x, this.y);
Point.origin() : x = 0, y = 0;
}
-
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
- Default constructor'ı değiştirmek için
- Sınıfı soyut hale getirmek için
Cevabı göster
Parametresiz, (0, 0) noktası için özel bir başlatma yapmak için — Point.origin() özel bir başlatma sunar; parametre almadan alanları sıfıra ayarlar.
-
Named constructor parçalarını eşle
- Point
- Sınıf ismi
- origin
- Yapıcı ismi
- : x = 0, y = 0
- Initializer list
Sıradaki ders: Initializer list