Javada interfeyslar orqali to’liq abstraktsiyani tashkillashtirish mumkin. Interfeys tarkibida funksiyalarning faqat nomlari bo’lishi mumkin, ularning tanasi bo’lishi mumkin emas(Java 8 dan boshlab default funksiyalarga funksiyaning bajarilish qismi yozilishi qo’shildi). Shuningdek, Interfeys tarkibida ma’lumotlar bo’lishi ham mumkin.
Interfeyslarda o’zgaruvchilar e’lon qilinmaydi unda faqat o’zgarmas qiymatlar – final qiymatlar e’lon qilinadi.
Interfeysga bitta misol keltirsak.
- public interface Dasta {
-
- void ishlatilishSohasi();
-
- void tayorlanganMatirial();
-
- void size();
-
- }
Dasta nomli interfeys yaratildi, unda ishlatilishSohasi(), tayorlanganMatirial(), size() nomli funksiyalari bor.
- public class Pichoq implements Dasta{
- @Override
- public void ishlatilishSohasi() {
- }
- @Override
- public void tayorlanganMatirial() {
- }
- @Override
- public void size() {
- }
- Pichoq pichoq = new Pichoq();
- pichoq.ishlatilishSohasi();
- pichoq.tayorlanganMatirial();
- pichoq.size();
- }
- }
Ko’rib turganingizdek klass yaratildi va Dasta interfeysidan (implement olindi) foydalanildi. Bu holatda dasta barcha dastasi bor obyektlar uchun umumiydir.
default funksiyaga misol :
- interface Formula {
- double calculate(int a);
- default double sqrt(int a) {
- }
- }
- Formula formula = new Formula() {
- @Override
- public double calculate(int a) {
- return sqrt(a * 100);
- }
- };
- formula.calculate(100); // 100.0
- formula.sqrt(16);
Esda tuting: Java kompilyatori interfeys tarkibidagi funksiyalarga public va abstract kalit so’zlarni, interfeys tarkibidagi ma’lumotlarga esa public, static va final kalit so’zlarni qo’shadi.
Bir klass bir vaqtda bir nechta interfeyslardan foydalanishi (implementation) mumkin. Quyidagi misolga qarang:
- void print();
- }
- interface Showable{
- void show();
- }
- A obj = new A();
- obj.print();
- obj.show();
- }
- }
- Quyidagi misolda klass interfeysdan foydalanadi, interfeys esa boshqa interfeysdan nasl oladi:
- void print();
- }
- void show();
- }
- class A implements Showable{
- A obj = new A();
- obj.print();
- obj.show();
- }
- }
Shunindek, bir interfeys tarkibida boshqa bir interfeys bo’lishi ham mumkin:
- interface Xat {
- void xatKeldi();
- interface xatHabar{
- void xatHabarKeldi();
- }
- }
Abstrakt klass va interfeys o’rtasidagi farqlar
Abstrakt klass
|
Interfeys
|
Abstrakt klassda abstrakt va
abstrakt bo’lmagan funksiyalar bo’ladi
|
Interfeysda faqat
abstrakt funksiyalar bo’ladi
|
Classlar faqat bitta abstrakt klassdan meros olishi mumkin |
Classlar bir nechta interfeyslardan meros olishi mumkin |
Abstrakt klasslarda final, non-final static va non-static bo’lgan o’zgaruvchilar bo’lishi mumkin |
Interfeysda esa faqat
final va static o’zgaruvchilar bo’ladi
|
Abstrakt klaslarda static funksiyalar, main funksiyalar va konstruktorlar yaratish mumkin |
Interfeysda esa static funksiyalar, main funksiyalar va konstruktorlar yaratib bo’lmaydi |
Interfeys va abstrakt klasslarga misol:
- //interface da 4ta method yaratilyapti
- interface A {
- void a(); abstract
- void b();
- void c();
- void d();
- }
- // B abstrakt klassi yaratilyapti va A interfeysdan foydalanilyapti
- abstract class B implements A{
- }
- class M extends B{
- }
- class Test5{
- A a=new M();
- a.a();
- a.b();
- a.c();
- a.d();
- }}
Natija :
Men a man
Men b man
Men d man
Men c man
G'ayratjon Rayimjonovning so'nngi maqolalari (hammasini ko'rish)
- Javada Stringlar - 14/06/2017
- Javada Map - 21/03/2017
- Javada Set - 26/12/2016