2.11. Sinf interfacelari
Interface metodlar ya’ni usullar jamlanmasi bo’lib, spetsifikatsiyani realizatsiya qilayotgan sinfda bu usullar ta’rifi berilishi lozim. Interfacelarda usullar realizatsiyasi berilmaydi. Abstract sinflar kabi interface lardan ko’plik, vorislikda foydalanish mumkin. Interfacelar bu ko’p vorislikni amalga oshirib beradi ya’ni bir necha interface dan uning nusxasini ko’chirish mumkin. Interface lar sinflarga o’xshaydi lekin metodlari realizatsiya bo’lmaydi. Sinf ixtiyoriy sondagi interface ga ega bo’lishi mumkin.
Interfacelarni umumiy ko’rinishi :
interface {
( [ ] );
}
Ushbu interfeysda e’lon qilingan usullarni tanasi yo’q. Shuning uchun realizatsiyaqiluvchi sinfda ularning qiymatini o’zgartirish mumkin emas. Bundan tashqari o’zgaruvchilarni interfeysda ta’riflaganda const qiymat bilan initsilizatsiya qilish kerak. Misol uchun interface yaratamiz:
public interface My_interface {
public int my_method();
}
Bu ninterfeysni foydalanish huquqi ochiq va bitta metod my_method dan iborat.
Interfeys nomi My_interface.
Agarda interfeysimizda biror bir o’zgaruvchi yoki maydonni e’lon qilmoqchi bo’lsak, bir o’zgaruvchini (maydonni) e’lon qilmoqchi bo’lsak uning qiymatini e’lon qilish lozim.
<tip> =;
Implements operatori
Implements operatori interfeyslarni realizatsiya qilish uchun ishlatiladi.
Class sinf_nomi:[extends sinf_nomi] [implements interface0, interface1,…,interface n] {
Sinf tanasi;
}
Agarda bu sinfda bir necha sinflar realizatsiya qilinsa vergul bilan ajratiladi.
Misol Arifmetika interfeysini yaratamiz:
public interface Arifmetika {
public int qoshish(int x, int y);
public int ayirish(int x, int y);
public int kopaytirish(int x, int y);
public int bolish(int x, int y);
public int max(int x, int y);
}
Yuqordagi interfaceni Arif sinfida realizatsiya qilamiz:
public class Arif implements Arifmetika{
@Override
public int qoshish(int x, int y){
return x+y;
}
@Override
public int ayirish(int x, int y){
return x-y;
}
@Override
public int kopaytirish(int x, int y){
return x*y;
}
@Override
public int bolish(int x, int y){
return x/y;
}
@Override
public int max(int x, int y){
return x>=y?x:y;
}
}
Endi yaratilgan sinfimizdan asosiy sinfda foydalanishni ko’rib chiqamiz.
public class Misol1 {
public static void main(String[] args) {
Arif p=new Arif();
System.out.println(p.qoshish(500,400));
System.out.println(p.ayirish(500,400));
System.out.println(p.kopaytirish(500,400));
System.out.println(p.bolish(100,4));
System.out.println(p.max(500,400));
}
}
Interfeyslardan faqat bitta Arif sinfida foydalanilgan. Bu sinf interfeyslarni realizatsiya qiluvchi sinf deyiladi. Keyingisi Misol1 sinfi asosiy sinf hisoblanadi, chunki asosiy metodi bo’lgani uchun.
Misol: Matritsa interfeysini yaratamiz:
public interface Matrix {
public int min(int[] a);
public int max(int[] a);
public int juftlar_soni(int[] a);
public int toqlar_soni(int[] a);
public int musbat_soni(int[] a);
public int manfiy_soni(int[] a);
public int sum(int[] a);
public int kop(int[] a);
}
Do'stlaringiz bilan baham: |