Interface
Interface metodlar to'plamini belgilovchi abstrakt tur. U ma'lum metodlarga ega bo'lgan har qanday tur (struct, custom type va hokazo) uchun umumiy xatti-harakatni belgilab beradi.
Interface yordamida polimorfizm amalga oshiriladi, ya'ni turli structlar bitta interface ni implement qilishi mumkin.
Polimorfizm nima?
Polimorfizm — bir xil narsa turli shakllarda ishlashi. Tasavur qiling farzandingiz bor deylik. Unga O'tir! desangiz, u kursiga o'tiradi. Lekin agar O'tir! buyru'ini itga aytsangiz, u yerga o'tiradi.
Bir xil buyruq (O'tir!), lekin har xil harakat. Bu polimorfizm!
Go da polimorfizm interface lar orqali amalga oshiriladi.
Masalan, transport vositalarini tasavvur qiling:
- Mashina yuradi
- Velosiped yuradi
- Samolyot uchad
Ularning barchasini harakat deb nomlashimiz mumkin.
Interface e'lon qilish
Info
Interface ham struct kabi yangi tur hisoblanadi. Ammo u structdan farqli ravishda hech qanday ma'lumot saqlamaydi.
Struct va Interface farqi
Xususiyat | Struct | Interface |
---|---|---|
Yangi tur yaratish | ✅ Ha | ✅ Ha |
Maydonlarga ega bo'lish | ✅ Ha | ❌ Yo'q |
Metodlarni o'z ichiga olishi | ❌ Yo'q | ✅ Ha(qanday metodlar bo'lishi kerakligini belgilaydi) |
Ma’lumot saqlashi | ✅ Ha | ❌ Yo'q |
Turli struct lar uchun umumiy foydalanish | ❌ Yo'q | ✅ Ha |
Polimorfizm bilan ishlaydi | ❌ Yo'q | ✅ Ha |
Interfacega method qo'shish
Agar biz transport vositalarini tasavvur qiladigan bo'lsak barcha transport vositalari uchun Transport
interface mos
keladi chunki barchasida harakat xususiyati bor.
- Mashina yuradi
- Velosiped yuradi
- Samolyot uchad
Quyida yuqoridagi interface dan foydalanishni ko'ramiz.
Natija:
Info
Agar interfaceda e'lon qilingan method biror structda mavjud bo'lsa, demak usha struct shu interfacega tegishli bo'ladi.
Yuqoridagi misolni quyidagicha izohlash mumkin:
- Transport — bu interfeys, ya’ni har qanday harakatlanadigan narsalar uchun umumiy qoidalarni belgilaydi.
- Mashina, Velosiped, Samolyot — bu turli vositalar (struct) va ularning barchasi Transport interfeysini qabul qiladi.
- Harakat() metodi — bu interfeys talab qilgan metod bo'lib, har bir transport turida u har xil ishlaydi.
- HarakatniBoshlash() funksiyasi interfeysga bog'langan. Ya’ni, unga istalgan transport yuborilsa, u shu transportning Harakat() metodini chaqiradi.
Transport interfeysi – bu yo'lda harakat qilish
degan qoida.
Lekin qanday harakat qilishini har bir transport turi(struct) o'zi aniqlaydi:
- Interfeys — bu
qanday ish bajarilishi
emas, balki qanday metod bo'lishi kerakligini belgilaydi. - Struct lar esa metodni
qanday harakat
qilishini belgilab beradi.
Xulosa
Interfeys — bu Go tilida bir nechta tur (struct) uchun umumiy metodlarni belgilab beruvchi tuzilma. U qanday metodlar
mavjud bo'lishi kerakligini ko'rsatadi, lekin ularning qanday ishlashini belgilab bermaydi. Struct lar esa metodni
qanday ishlashini
belgilab beradi.