Sobes.tech
Junior

Mis vahe on võtmesõnadel Abstract ja late Dartis?

sobes.tech AI

Vastus AI-lt

Abstract kasutatakse abstraktsete klasside loomisel, mida ei saa otse instantsida. Abstraktil klassil võivad olla nii realiseeritud kui ka abstraktsed (ilma realiseerimiseta) meetodid. Abstraktsed meetodid peavad olema realiseeritud alamklassides.

late kasutatakse hilinenud initsialiseerimiseks. late märgitud muutuja on garanteeritult initsialiseeritud enne selle esimest kasutamist. Kui muutuja on märgitud kui late ja see ei ole enne esimest kasutamist initsialiseeritud, tekib jooksuaegne viga. See on kasulik muutujate initsialiseerimisel, mille väärtused sõltuvad teistest muutujatest või loogikast, mis toimub pärast deklaratsiooni.

Omadus Abstract late
Rakendamine Klassidele Muutujatele
Eesmärk Leping, mall Hilinenud initsialiseerimine
Instantsi loomine Ei ole võimalik otse Võimalik
Kohustuslik Meetodite realiseerimine alamklassides Initsialiseerimine enne esimest kasutust

Näide abstract:

// Abstraktse klassi defineerimine
abstract class Shape {
  // Abstraktne meetod
  double getArea();

  // Realiseeritud meetod
  void printName() {
    print("See on kuju");
  }
}

// Abstraktse klassi realiseerimine
class Circle extends Shape {
  double radius;

  Circle(this.radius);

  @override
  double getArea() {
    return 3.14 * radius * radius;
  }
}

// Ei saa luua Shape eksemplari:
// var shape = Shape(); // Viga

Näide late:

// Hilinenud initsialiseerimisega muutuja defineerimine
late String name;

void setupName() {
  // Initsialiseerimine enne esimest kasutamist
  name = "Flutter Developer";
}

void greet() {
  // Esimene kasutamine pärast initsialiseerimist
  print("Hello, $name!");
}

void main() {
  setupName();
  greet(); // Väljund "Hello, Flutter Developer!"

  // Kui greet() kutsutakse enne setupName(), tekib viga
  // greet(); // Viga, kui name ei ole initsialiseeritud
}