16. Interface¶
Oldingi bobda abstract class bilan tanishdik.
Java'da abstraction yaratishning yana bir muhim usuli — interface.
Interface'ni oddiy qilib:
Class qanday methodlarga ega bo‘lishi kerakligini belgilaydigan qoida.
deb tushunish mumkin.
Interface yaratish¶
Interface yaratish uchun interface so‘zi ishlatiladi.
interface Animal {
void ovoz();
}
Bu yerda Animal — interface.
ovoz() esa interface ichidagi method.
Interface'dan foydalanish¶
Class interface'dan foydalanish uchun implements so‘zini ishlatadi.
class Dog implements Animal {
@Override
public void ovoz() {
System.out.println("Vov-vov!");
}
}
Bu yerda:
Dog implements Animal
Dog Animal interface'idan foydalanayotganini bildiradi.
To‘liq misol¶
interface Animal {
void ovoz();
}
class Dog implements Animal {
@Override
public void ovoz() {
System.out.println("Vov-vov!");
}
}
public class Main {
public static void main(String[] args) {
Dog it = new Dog();
it.ovoz();
}
}
Natija:
Vov-vov!
Interface'da bir nechta method¶
Interface ichida bir nechta method bo‘lishi mumkin.
interface Animal {
void ovoz();
void ovqatlan();
}
Dog ikkala methodni ham yozishi kerak.
class Dog implements Animal {
@Override
public void ovoz() {
System.out.println("Vov-vov!");
}
@Override
public void ovqatlan() {
System.out.println("It ovqatlanyapti.");
}
}
Bir nechta class bitta interface'dan foydalanishi mumkin¶
Masalan:
interface Animal {
void ovoz();
}
Dog:
class Dog implements Animal {
@Override
public void ovoz() {
System.out.println("Vov-vov!");
}
}
Cat:
class Cat implements Animal {
@Override
public void ovoz() {
System.out.println("Miyov!");
}
}
Endi:
Animal it = new Dog();
Animal mushuk = new Cat();
it.ovoz();
mushuk.ovoz();
Natija:
Vov-vov!
Miyov!
Bu yerda interface polymorphism bilan birga ishlayapti.
Bir class bir nechta interface ishlatishi mumkin¶
Java'da class faqat bitta classdan extends qilishi mumkin.
Lekin bir nechta interface'ni implements qilishi mumkin.
Masalan:
interface Flyable {
void uch();
}
interface Swimmable {
void suz();
}
Endi Duck ikkala interface'dan foydalanadi:
class Duck implements Flyable, Swimmable {
@Override
public void uch() {
System.out.println("O‘rdak uchmoqda.");
}
@Override
public void suz() {
System.out.println("O‘rdak suzmoqda.");
}
}
extends va implements¶
Bu ikkita so‘zni adashtirmang.
Classdan meros olish:
class Dog extends Animal {
}
Interface'dan foydalanish:
class Dog implements Animal {
}
Qisqacha:
extends → class
implements → interface
Interface va abstract class¶
Ikkalasi ham abstraction uchun ishlatiladi.
Abstract class:
abstract class Animal {
abstract void ovoz();
}
Interface:
interface Animal {
void ovoz();
}
Hozircha eng muhim farqni eslab qoling:
abstract class → extends
interface → implements
Real hayotdagi misol¶
Masalan, turli qurilmalar ovoz chiqara oladi.
Biz interface yaratamiz:
interface Soundable {
void ovozChiqar();
}
Telefon:
class Phone implements Soundable {
@Override
public void ovozChiqar() {
System.out.println("Telefon ovoz chiqarmoqda.");
}
}
Kompyuter:
class Computer implements Soundable {
@Override
public void ovozChiqar() {
System.out.println("Kompyuter ovoz chiqarmoqda.");
}
}
Ikkala class ham Soundable qoidasiga amal qiladi.
Amaliy mashqlar¶
1-mashq¶
Animal interface yarating.
Unda:
void ovoz();
methodi bo‘lsin.
Keyin Dog va Cat classlarini yarating.
2-mashq¶
Vehicle interface yarating.
Unda:
void yur();
methodi bo‘lsin.
Car va Bus classlari undan foydalansin.
3-mashq¶
Flyable interface yarating.
Unda:
void uch();
methodi bo‘lsin.
Keyin Bird classini yarating.
4-mashq¶
Quyidagi ikkita interface yarating:
Flyable
Swimmable
Keyin Duck classi ikkala interface'dan ham foydalansin.
Muhim narsalarni eslab qoling¶
Interface — classlar uchun umumiy qoida belgilaydi.
Interface yaratish:
interface Animal {
void ovoz();
}
Interface'dan foydalanish:
class Dog implements Animal {
}
Bir class bir nechta interface ishlatishi mumkin:
class Duck implements Flyable, Swimmable {
}
extends — classdan meros olish uchun.
implements — interface'dan foydalanish uchun.
Interface abstraction va polymorphism yaratishda juda muhim.