Abstrakt sinf — bevosita obyekt yaratib bo’lmaydigan, faqat boshqa sinflar uchun andoza (shablon) vazifasini bajaradigan sinf. U umumiy tuzilmani belgilaydi, ammo ba’zi metodlarni bola sinflar to’ldirishi shart. Abstrakt sinflar — OOP dizaynining muhim vositasidir.
Abstrakt sinf —
abstractkalit so’zi bilan e’lon qilinadigan, obyekt yaratib bo’lmaydigan sinf. U tanasiz (abstrakt) metodlarni o’z ichiga olishi mumkin.
Abstrakt sinf e’lon qilish
Abstrakt sinf abstract bilan e’lon qilinadi. U tanasiz metod — faqat “shakl”ni belgilaydi:
abstract class Hayvon {
void ovoz(); // tanasiz (abstrakt) metod
}
class Mushuk extends Hayvon {
@override
void ovoz() {
print("Miyov");
}
}
void main() {
var m = Mushuk();
m.ovoz();
}
Miyov
abstract class Hayvon — abstrakt sinf, void ovoz(); — tanasiz metod (faqat e’lon). Mushuk undan meros olib, ovoz ni to’ldirishi shart. Bu majburiylik abstrakt sinfning kuchidir.
Nega obyekt yaratib bo’lmaydi?
Abstrakt sinfdan bevosita obyekt yaratib bo’lmaydi — u faqat andoza:
abstract class Hayvon {
void ovoz();
}
void main() {
// var h = Hayvon(); // XATO: abstrakt sinfdan obyekt yaratib bo'lmaydi
print("Abstrakt sinf faqat andoza");
}
Abstrakt sinf faqat andoza
Hayvon() deb yozib bo’lmaydi, chunki “hayvon” umumiy tushuncha — aniq mushuk yoki it bo’lishi kerak. Abstrakt sinf shu mantiqni kod bilan ifodalaydi.
Abstrakt va oddiy metod birga
Abstrakt sinf ham tanasiz (abstrakt), ham to’liq (oddiy) metodlarni o’z ichiga olishi mumkin:
abstract class Shakl {
void chiz(); // abstrakt — bola to'ldiradi
void tavsif() { // oddiy — tayyor
print("Bu bir shakl");
}
}
class Doira extends Shakl {
@override
void chiz() {
print("Doira chizildi");
}
}
void main() {
var d = Doira();
d.chiz();
d.tavsif();
}
Doira chizildi
Bu bir shakl
chiz() — abstrakt (bola to’ldirdi), tavsif() — tayyor metod (meros olindi). Abstrakt sinf umumiy xatti-harakatni berib, farqli qismini bolaga qoldiradi.
Qachon ishlatiladi?
Abstrakt sinflar bir necha sinf uchun umumiy “shartnoma” (interfeys) kerak bo’lganda ishlatiladi. Masalan, barcha “shakllar” chiz() metodiga ega bo’lishi kerak, ammo har biri o’zicha chizadi. Abstrakt sinf bu qoidani majburlaydi va kodni tuzilmali qiladi. Bu — katta loyihalarni loyihalashning muhim vositasidir.
Xulosa
Bu bo’limda abstrakt sinf (abstract), tanasiz metodlar, obyekt yaratib bo’lmasligi va abstrakt/oddiy metodlarni birga ishlatishni ko’rib chiqdik. Abstrakt sinflar umumiy andoza va majburiyat beradi. Keyingi darsda vorislikka o’tamiz.