JavaRush /Java blogi /Random-UZ /Nima uchun interfeyslar kerak?

Nima uchun interfeyslar kerak?

Guruhda nashr etilgan
Interfeyslar nima uchun kerak? Nima uchun interfeys merosi kerak? Polimorfizm nima uchun kerak? Interfeyslarni qanday yaratishni o'qigan va tushungan, lekin nima uchun ekanligini tushunmaganlar uchun.

Rad etish: Ushbu va keyingi maqolalarda sinflar va usullarning nomlari rus tilida beriladi.

Ob'ektga yo'naltirilgan dasturlash (OOP) tamoyillari haqida gap ketganda: polimorfizm, meros va inkapsulyatsiya, haqiqiy dunyo analogiyalaridan foydalanish foydalidir. OOP ning katta afzalligi shundaki, biz dasturda haqiqiy olamning bir qismini taqlid qilishimiz mumkin. Keling, Ivanovlar oilasini model qilaylik: dadam , onam va o'g'il Petya . Dadadan Petya choy ichayotganda xijolat chekish odatini, onasidan esa kitob o‘qiyotganda lablarini burish odatini meros qilib oldi. Agar biz ushbu vaziyatni dasturga kiritishga harakat qilsak, biz uchta sinfga ega bo'lamiz:
class Папа
class Мама
class Петя
Ota va onaning Pitga o'tishi kerak bo'lgan odatlari bor . Odatlar qandaydir harakatlardir, shuning uchun ularni dasturiy ta'minot dunyosida usullar sifatida qo'llash yaxshidir: Dada Birinchidan :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Endi onam :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Agar biz meros haqida gapiradigan bo'lsak, kodni quyidagicha yozish mantiqan to'g'ri keladi:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ya'ni, Petyani bir vaqtning o'zida ota va onadan meros qilib olish. Agar siz buni shunday yozsangiz, kompilyator shikoyat qiladi, chunki Java-da siz bir nechta sinf merosini amalga oshira olmaysiz. Aytgancha, bu C++ da mumkin, lekin Java-da emas, chunki bir nechta meros bilan katta muammolar paydo bo'lishi mumkin: ular Internetda batafsil yozadilar . Ushbu "mumkin emas" dan o'tish uchun Java interfeyslariga ega. Va odatlar uchun biz o'z interfeysimizni o'ylab topamiz. Hatto ikkitasi: ular quyidagicha ko'rinadi: Nima uchun interfeyslar kerak?  - 1
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
Interfeysda biz faqat odatlarni tasvirlab berdik, lekin ular aniq nima qilishlarini tasvirlamadik, chunki biz sinflarda aniq amalga oshirishni yozamiz. Birinchidan, otam va onamga qonuniy odatlarini beraylik .
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Va endi, odatlarni dadam va onadan Pitga bir vaqtning o'zida o'tkazish mutlaqo qonuniydir
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ya'ni Java-da bir nechta amalga oshirish (ko'pincha amalga oshirish deb ataladi) juda mumkin. Interfeyslar nima uchun kerak?  - 2Endi interfeyslarning ma'nosi aniq bo'lishi kerak - Java-da siz interfeyslar yordamida bir nechta merosni amalga oshirishingiz mumkin. Vaziyatni yanada rivojlantiradigan bo'lsak, masalan: Axir, otam va onamning Petyaga o'tmagan odatlari bor , Petya ham o'zining shaxsiy odatlariga ega bo'lishi mumkin. Ushbu muhim Santa Barbarani Java samolyotiga qanday o'tkazishni keyingi epizodlarda bilib olasiz. Bu interfeyslarni tushunishning yagona misoli emas.Agar siz quyidagi maqolalarni o‘qimagan bo‘lsangiz, albatta o‘qing: Java-dagi interfeyslar (agar ochilmasa, profilingizdan chiqishingiz yoki inkognito rejimida o‘qishingiz mumkin) Interfeyslar nima uchun kerak? Java - bu erda maqoladagi barcha misollarni amalga oshiring va usullarni interfeyslarda ham, sinflarda ham o'zgartiring: usullarning nomlari, imzolar (usul kirish sifatida qabul qilinadigan), usullarning chiqish turlari. O'zingiz tushuning: - sinf va abstrakt sinf bilan interfeysni amalga oshirishdagi farq; - standart usullar.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION