Sobes.tech
Junior

Ի՞նչ է տարբերությունը Dart-ում Abstract և late հիմնական բառերի միջև։

sobes.tech AI

Պատասխան AI-ից

Abstract օգտագործվում է աբստրակտ դասեր ստեղծելու համար, որոնք ուղղակիորեն չեն կարող ինստանցավորվել: Աբստրակտ դասը կարող է պարունակել ինչպես իրագործված, այնպես էլ աբստրակտ (իրականացման բաց) մեթոդներ: Աբստրակտ մեթոդները պետք է իրագործվեն ենթակլասներում:

late օգտագործվում է հետաձգված ինիցիալիզացիայի համար: late նշված փոփոխականը հաստատապես ինիցիալիզացված կլինի իր առաջին օգտագործումից առաջ: Եթե փոփոխականը նշված է որպես late և չի ինիցիալիզացված առաջին դիմումից առաջ, տեղի կունենա գործարկման ժամանակի սխալ: Սա օգտակար է փոփոխականների ինիցիալիզացման համար, որոնք կախված են այլ փոփոխականներից կամ լոգիկայից, որը կատարվում է հայտարարելուց հետո:

Գնահատական Abstract late
Կիրառվում է Դասերի Փոփոխականների
Մտադրություն Կոնտակտ, շաբլոն Հետաձգված ինիցիալիզացիա
Ինստանցավորում Անհնար է ուղղակի Կարող է լինել
Պարտադիրություն Մեթոդների իրագործում ենթակլասներում Ինիցիալիզացիա առաջին օգտագործումից առաջ

Օրինակ abstract:

// Աբստրակտ դասի սահմանում
abstract class Shape {
  // Աբստրակտ մեթոդ
  double getArea();

  // Իրականացված մեթոդ
  void printName() {
    print("Սա ձև է");
  }
}

// Աբստրակտ դասի իրագործում
class Circle extends Shape {
  double radius;

  Circle(this.radius);

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

// Չի կարելի ստեղծել Shape օրինակ:
// var shape = Shape(); // Սխալ

Օրինակ late:

// Հետաձգված ինիցիալիզացիայով փոփոխականի հայտարարում
late String name;

void setupName() {
  // Փոփոխականի ինիցիալիզացիա նախքան առաջին օգտագործումը
  name = "Flutter Developer";
}

void greet() {
  // Առաջին օգտագործումը name փոփոխականի հետո ինիցիալիզացիայի
  print("Hello, $name!");
}

void main() {
  setupName();
  greet(); // Տպում է "Hello, Flutter Developer!"

  // Եթե greet() կանչվի նախքան setupName(), տեղի կունենա գործարկման սխալ
  // greet(); // Սխալ, եթե name չլինի ինիցիալիզացված
}