Sobes.tech
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
}