Sobes.tech
Junior

Koja je razlika između ključnih reči Abstract i late u Dart-u?

sobes.tech АИ

Одговор од АИ

Abstract se koristi za kreiranje apstraktnih klasa koje se ne mogu direktno instancirati. Apstraktna klasa može sadržavati implementirane i apstraktne (bez implementacije) metode. Apstraktne metode moraju biti implementirane u neapstraktnim podklasama.

late se koristi za odloženu inicijalizaciju promenljivih. Promenljiva označena kao late će biti garantovano inicijalizovana pre svoje prve upotrebe. Ako promenljiva deklarisana kao late nije inicijalizovana pre prvog pristupa, doći će do greške u toku izvršenja. Ovo je korisno za inicijalizaciju promenljivih čije vrednosti zavise od drugih promenljivih ili logike koja se izvršava nakon deklaracije.

Svojstvo Abstract late
Primena na Klase Promenljive
Cilj Definiše ugovor, šablon Odložena inicijalizacija
Instanciranje Nije moguće direktno Moguće
Obaveza Implementacije u podklasama (za apstraktne metode) Inicijalizacija pre prve upotrebe

Primer abstract:

// Definicija apstraktne klase
abstract class Shape {
  // Apstraktna metoda
  double getArea();

  // Implementirana metoda
  void printName() {
    print("Ovo je figura");
  }
}

// Implementacija apstraktne klase
class Circle extends Shape {
  double radius;

  Circle(this.radius);

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

// Nije moguće kreirati instancu Shape:
// var shape = Shape(); // Greška

Primer late:

// Deklaracija promenljive sa odloženom inicijalizacijom
late String name;

void setupName() {
  // Inicijalizacija promenljive pre prve upotrebe
  name = "Flutter Developer";
}

void greet() {
  // Prva upotreba promenljive name nakon inicijalizacije
  print("Hello, $name!");
}

void main() {
  setupName();
  greet(); // Ispisaće "Hello, Flutter Developer!"

  // Ako bi se greet() pozvalo pre setupName(), došlo bi do greške u toku izvršenja
  // greet(); // Greška ako name nije inicijalizovan
}