Java interfeys


ULASHISH

Interfeyslar

Java tilida abstraksiyaga erishishning yana bir usuli — interfeyslar.

interface — tanasi bo‘sh bo‘lgan o‘zaro bog‘liq metodlarni guruhlash uchun ishlatiladigan to‘liq "abstrakt sinf":

Misol

// interface
interface Animal {
  public void animalSound(); // interface method (does not have a body)
  public void run(); // interface method (does not have a body)
}

Interfeys metodlariga murojaat qilish uchun interfeys boshqa sinf tomonidan (extends o‘rniga) implements kalit so‘zi yordamida "amalga oshirilishi" (implement — meros olishga o‘xshash) kerak. Interfeys metodining tanasini uni "amalga oshiruvchi" sinf taqdim etadi:

Misol

// Interface
interface Animal {
  public void animalSound(); // interface method (does not have a body)
  public void sleep(); // interface method (does not have a body)
}

// Pig "implements" the Animal interface
class Pig implements Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
  public void sleep() {
    // The body of sleep() is provided here
    System.out.println("Zzz");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig();  // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}

O‘zingiz sinab ko‘ring »

Interfeyslar haqida eslatmalar:

  • Abstrakt sinflar kabi interfeyslardan ham obyekt yaratish uchun foydalanib bo‘lmaydi (yuqoridagi misolda MyMainClass sinfida "Animal" obyektini yaratib bo‘lmaydi)
  • Interfeys metodlarining tanasi bo‘lmaydi — tanani "amalga oshiruvchi" sinf taqdim etadi
  • Interfeysni amalga oshirishda uning barcha metodlarini qayta aniqlashingiz (override) shart
  • Interfeys metodlari sukut bo‘yicha abstract va public bo‘ladi
  • Interfeys atributlari sukut bo‘yicha public, static va final bo‘ladi
  • Interfeysda konstruktor bo‘lishi mumkin emas (chunki undan obyekt yaratib bo‘lmaydi)

Nima uchun va qachon interfeyslardan foydalanish kerak?

1) Xavfsizlikka erishish uchun — ba’zi tafsilotlarni yashirib, obyektning (interfeysning) faqat muhim tafsilotlarini ko‘rsatish.

2) Java "ko‘plab vorislik"ni (multiple inheritance) qo‘llab-quvvatlamaydi (sinf faqat bitta ota sinfdan (superclass) meros olishi mumkin). Biroq bunga interfeyslar yordamida erishish mumkin, chunki sinf bir nechta interfeysni amalga oshira oladi. Eslatma: Bir nechta interfeysni amalga oshirish uchun ularni vergul bilan ajrating (quyidagi misolga qarang).



Bir nechta interfeys

Bir nechta interfeysni amalga oshirish uchun ularni vergul bilan ajrating:

Misol

interface FirstInterface {
  public void myMethod(); // interface method
}

interface SecondInterface {
  public void myOtherMethod(); // interface method
}

class DemoClass implements FirstInterface, SecondInterface {
  public void myMethod() {
    System.out.println("Some text..");
  }
  public void myOtherMethod() {
    System.out.println("Some other text...");
  }
}

class Main {
  public static void main(String[] args) {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}

O‘zingiz sinab ko‘ring »




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!