Java interfeys
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();
}
}
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
abstractvapublicbo‘ladi - Interfeys atributlari sukut bo‘yicha
public,staticvafinalbo‘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();
}
}
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
