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 չլինի ինիցիալիզացված
}