Dart tilida Abstract va late so'z kalitlari orasidagi farq nima?
sobes.tech AI
AIdan javob
Abstract sinfi yaratish uchun ishlatiladi va to'g'ridan-to'g'ri instansiya qilish mumkin emas. Abstract sinf amalga oshirilgan va amalga oshirilmagan (implementatsiya qilinmagan) metodlarni o'z ichiga olishi mumkin. Abstract metodlar non-abstract subclasslarda amalga oshirilishi kerak.
late o'zgaruvchilarni kechiktirilgan boshlash uchun ishlatiladi. late bilan belgilangan o'zgaruvchi, uning birinchi foydalanishidan oldin, aniq ravishda boshlanishi kafolatlanadi. Agar late sifatida e'lon qilingan o'zgaruvchi, uning birinchi kirishidan oldin boshlanmasa, bajarilish vaqtida xato yuz beradi. Bu, boshqa o'zgaruvchilarga yoki e'lon qilinganidan keyin bajariladigan mantiqqa bog'liq bo'lgan o'zgaruvchilarni boshlash uchun foydalidir.
| Xususiyat | Abstract | late |
|---|---|---|
| Qo'llanilishi | Sinflar | O'zgaruvchilar |
| Maqsad | Shartnoma, shablon aniqlash | Kechiktirilgan boshlash |
| Instansiya qilish | To'g'ridan-to'g'ri mumkin emas | Mumkin |
| Majburiyat | Subklasslarda metodlarni amalga oshirish (abstract metodlar uchun) | Birinchi foydalanishdan oldin boshlash |
abstract misoli:
// Abstract sinf ta'rifi
abstract class Shape {
// Abstract metod
double getArea();
// Amalga oshirilgan metod
void printName() {
print("Bu figura");
}
}
// Abstract sinfni amalga oshirish
class Circle extends Shape {
double radius;
Circle(this.radius);
@override
double getArea() {
return 3.14 * radius * radius;
}
}
// Shape ni to'g'ridan-to'g'ri yaratib bo'lmaydi:
// var shape = Shape(); // Xato
late misoli:
// Kechiktirilgan boshlash bilan o'zgaruvchi e'lon qilish
late String name;
void setupName() {
// O'zgaruvchini birinchi foydalanishdan oldin boshlash
name = "Flutter Developer";
}
void greet() {
// Birinchi foydalanish
print("Hello, $name!");
}
void main() {
setupName();
greet(); // "Hello, Flutter Developer!" chiqaradi
// Agar greet() setupName()dan oldin chaqirilsa, bajarilish vaqtida xato yuz beradi
// greet(); // Xato, agar name boshlanmagan bo'lsa
}