Mavhum sinf va interfeys o'rtasidagi farq

Mavhum sinf va interfeys o'rtasidagi farq
Mavhum sinf va interfeys o'rtasidagi farq

Video: Mavhum sinf va interfeys o'rtasidagi farq

Video: Mavhum sinf va interfeys o'rtasidagi farq
Video: Публичное собеседование: Junior Java Developer. Пример, как происходит защита проекта после курсов. 2024, Noyabr
Anonim

Abstrakt sinf va interfeys

Mavhum sinf va Interfeys Java kabi koʻplab obʼyektga yoʻn altirilgan dasturlash tillarida joylashgan ikkita obʼyektga yoʻn altirilgan konstruksiyadir. Mavhum sinfni oddiy (konkret) sinfning mavhum versiyasi, interfeys esa shartnomani amalga oshirish vositasi sifatida ko'rib chiqilishi mumkin. Abstrakt sinf - bu ishga tushirilmaydigan, ammo kengaytirilishi mumkin bo'lgan sinf. Interfeys boshqa sinflar tomonidan amalga oshirilishi kerak bo'lgan tur. Java-da Abstract sinflar Abstract kalit so'zi yordamida e'lon qilinadi, interfeys kalit so'zi esa interfeysni aniqlash uchun ishlatiladi.

Mavhum sinf nima?

Odatda, Abstract Base Classes (ABC) sifatida ham tanilgan mavhum sinflarni namuna qilib boʻlmaydi (bu sinfning namunasini yaratib boʻlmaydi). Shunday qilib, mavhum sinflar faqat dasturlash tili merosni qo'llab-quvvatlasa (sinfni kengaytirishdan kichik sinflarni yaratish qobiliyati) mazmunli bo'ladi. Mavhum sinflar odatda qisman yoki umuman amalga oshirilmagan mavhum tushuncha yoki ob'ektni ifodalaydi. Shu sababli, abstrakt sinflar ota-sinflar vazifasini bajaradi, ulardan bolalar sinflari olinadi, shunda bolalar sinf ota-sinfning toʻliq boʻlmagan xususiyatlarini baham koʻradi va ularni bajarish uchun funksiyalar qoʻshilishi mumkin.

Mavhum sinflar abstrakt usullarni oʻz ichiga olishi mumkin. Mavhum sinfni kengaytiruvchi kichik sinflar ushbu (meroslangan) Abstrakt usullarni amalga oshirishi mumkin. Agar bolalar sinfi barcha mavhum usullarni amalga oshirsa, bu aniq sinfdir. Agar shunday bo'lmasa, bolalar sinfi ham Abstrakt sinfga aylanadi. Bularning barchasi shuni anglatadiki, dasturchi sinfni Abstrakt sifatida tayinlaganida, u sinf to'liq bo'lmasligini va unda meros qilib olingan kichik sinflar tomonidan to'ldirilishi kerak bo'lgan elementlar bo'lishini aytadi. Bu ikkita dasturchi o'rtasida shartnoma tuzishning yaxshi usuli bo'lib, u dasturiy ta'minotni ishlab chiqishdagi vazifalarni soddalashtiradi. Meros olish uchun kod yozuvchi dasturchi usul taʼriflariga toʻliq amal qilishi kerak (lekin, albatta, oʻz amaliyotiga ega boʻlishi mumkin).

Interfeys nima?

Interfeys mavhum tur boʻlib, u interfeysni amalga oshiradigan sinflar tomonidan amalga oshirilishi kerak boʻlgan shartnomani belgilash uchun ishlatiladi. Interfeys kalit so'zi interfeysni aniqlash uchun ishlatiladi va Implements kalit so'zi interfeysni sinf tomonidan amalga oshirish uchun ishlatiladi (Java dasturlash tilida). Odatda, interfeys faqat usul imzolari va doimiy deklaratsiyalarni o'z ichiga oladi. Muayyan interfeysni amalga oshiradigan har qanday interfeys interfeysda belgilangan barcha usullarni amalga oshirishi yoki mavhum sinf sifatida e'lon qilinishi kerak. Java-da ob'ekt havolasining turi interfeys turi sifatida belgilanishi mumkin. Lekin bu ob'ekt null bo'lishi kerak yoki ushbu interfeysni amalga oshiradigan sinf ob'ektini ushlab turishi kerak. Java'da Implements kalit so'zidan foydalanib, bitta sinfga bir nechta interfeyslarni amalga oshirishingiz mumkin.

Abstrakt sinf va interfeys oʻrtasidagi farq nima?

Mavhum sinflar odatda mavhum tushunchani yoki qisman yoki umuman amalga oshirilmagan ob'ektni ifodalaydi. Boshqa tomondan, interfeys sinflar tomonidan amalga oshirilishi kerak bo'lgan shartnomani belgilash uchun ishlatiladigan mavhum turdir. Abstrakt sinflar meros qilib olinishi (yoki kengaytirilishi), interfeyslar esa amalga oshirilishi kerak. Mavhum sinflar mavhum usullarni o'z ichiga olishi mumkin, interfeys esa faqat mavhum usullarni o'z ichiga olishi kerak. Mavhum sinflar har qanday o'zgaruvchilarni o'z ichiga olishi mumkin, lekin Interfeyslar faqat konstantalarni aniqlay oladi. Sinf bir nechta mavhum sinfdan meros bo'la olmaydi, lekin bir nechta interfeyslarni amalga oshirishi mumkin. Interfeys boshqa interfeysni amalga oshira olmaydi. Biroq interfeys sinfni kengaytirishi mumkin.

Tavsiya: