Junior
Dart'ta Abstract ve late anahtar kelimeleri arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Abstract sınıflar oluşturmak için kullanılır ve doğrudan örneklenemezler. Bir soyut sınıf, hem uygulanmış hem de soyut (uygulama olmayan) metodlar içerebilir. Soyut metodlar, soyut olmayan alt sınıflar tarafından uygulanmalıdır.
late değişkenlerin gecikmeli başlatılması için kullanılır. late ile işaretlenmiş bir değişken, ilk kullanımdan önce kesinlikle başlatılacaktır. Eğer late olarak ilan edilen bir değişken, ilk erişiminden önce başlatılmazsa, çalışma zamanında hata oluşur. Bu, diğer değişkenlere veya ilan edildikten sonra yürütülen mantığa bağlı olan değişkenlerin başlatılması için faydalıdır.
| Özellik | Abstract | late |
|---|---|---|
| Uygulama alanı | Sınıflar | Değişkenler |
| Amaç | Sözleşme, şablon tanımlama | Gecikmeli başlatma |
| Nesne oluşturma | Doğrudan mümkün değil | Mümkün |
| Zorunluluk | Alt sınıflarda metodların uygulanması (soyut metodlar için) | İlk kullanımdan önce başlatma |
abstract örneği:
// Soyut sınıf tanımı
abstract class Shape {
// Soyut metod
double getArea();
// Uygulanmış metod
void printName() {
print("Bu bir şekil");
}
}
// Soyut sınıfın uygulanması
class Circle extends Shape {
double radius;
Circle(this.radius);
@override
double getArea() {
return 3.14 * radius * radius;
}
}
// Shape örneği oluşturulamaz:
// var shape = Shape(); // Hata
late örneği:
// Gecikmeli başlatma ile değişken bildirimi
late String name;
void setupName() {
// Değişkenin ilk kullanımından önce başlatılması
name = "Flutter Developer";
}
void greet() {
// İlk kullanım, başlatmadan sonra
print("Hello, $name!");
}
void main() {
setupName();
greet(); // "Hello, Flutter Developer!" yazdırır
// Eğer `greet()` setupName()'den önce çağrılırsa, çalışma zamanı hatası olur
// greet(); // Hata, eğer name başlatılmadıysa
}