muzruno.com

Абстрактен клас и метод: описание, характеристики и особености. Каква е разликата между абстрактния клас и интерфейса

Всеки, който има поне минимални познания по програмирането, се зачуди защо има абстрактни базови класове. Каква е тяхната цел? Как да създадете абстрактен клас? Какви предимства дават на практика? Защо са необходими при програмирането и какви характеристики на тяхното прилагане трябва да бъдат взети под внимание?

Абстрактни класове

абстрактен класТака че при програмирането се нарича единица програмен код, въз основа на която не могат да бъдат създадени обекти. Трябва да се отбележи, че наследниците от този клас може да не са абстрактни. Ето защо създаването на обекти на тяхната основа е напълно възможно. Ако разгледаме един пример от Java, тогава ние конструираме такъв модел: можем да опишем конструкторите от клас А. Но ние не можем да ги използваме. Изходът от тази ситуация е да се обяви променлива като отправна точка. И е необходимо ясно да се посочи, че тя сочи към обект от клас А. Но как може да се направи това? Кастилката ще ни помогне в това. Трябва да се отбележи, че родителският клас винаги се счита за по-универсален от детето. На много програмни езици кастингът се използва автоматично. Но ако няма увереност в наличието на такъв механизъм, тогава трябва изрично да посочите препратка към обекта.

Обобщени методи

Какви са те? Обобщените имена са тези методи, които нямат приложение в разглеждания клас. По този начин, след скоби (която изброява аргументите, използвани там) не дават оформен отвор (при което движението на локализиращия блок описание на метода), и само запетая. По този начин в този случай няма информация за това, което той прави. Тук можете да задавате въпроса: "Защо методът не се прилага?" В края на краищата не може да се използва! Разбира се, това не е възможно в класа, където е описано. Но ако разгледаме тази ситуация от гледна точка на потомството, тогава може да се нарече. И тя ще функционира според специфичното описание, налично в този клас.

Характеристики на абстрактните методи

създайте абстрактен класСъществуват ограничения при използването им. Нека разгледаме това като пример Java програмен език. Тук има такова изискване: ако в класа има поне един такъв метод, то задължително трябва да е абстрактен. И в какви случаи е подходящо да се използват такива конструкции? Нека да разгледаме това в случая на класове за домашни любимци. Първо, трябва да се разбере, че няма звук, който всички публикуват. Следователно, в най-общия клас, прилагането на звуковия метод не е посочено. Но за него се създава тяло, което е отделено от блокове. И в бъдеще, когато ще бъде създаден клас за кучета, котки или хамстери, ще му бъде предписан отделен метод, в който ще бъдат разкрити всички признаци.

интерфейс

каква е разликата между абстрактен класВ програмирането са създадени много инструменти, чиято цел е да помогне на човек да направи продукт с добро качество. И в рамките на разглежданата тема е необходимо да обърнем внимание на този аспект, така че всеки да знае разликата между абстрактния клас и интерфейса. Така че особеността на последната е, че тя не може да има свойства, а методите не определят телата. Изследвайки какво се различава абстрактният клас от интерфейса, трябва да се занимаваме с още една функция. Първата е наследена, докато втората се реализира. За неопитен човек това може да изглежда незначително. Но факт е, че само един клас може да бъде наследен, и всеки брой може да бъде приложен. По този начин интерфейсът се различава от абстрактен клас. Ява има тези характеристики, които могат да описват абстрактни публични методи и статични константи. Но интерфейсите също могат да бъдат наследени. В този случай е необходимо да се посочи, че използваните оператори са публични с помощта на обществеността.

Множествено наследяване на интерфейса



отколкото абстрактният клас се различава от интерфейсаТази функция не е достъпна за класове на много езици за програмиране (например в Java, която обмисляме). Това се дължи на редица проблеми. Като такива, посочете неяснотата, която възниква при наследяването. Това беше причината за въвеждането на няколко наследствени интерфейса. Това частично решава съществуващите проблеми, но не всички. Така че, благодарение на принципите на капсулирането и полиморфизма, интерфейсите могат успешно да бъдат реализирани в различни класове чрез различни методи (въпреки че те ще имат едно и също име). Но не забравяйте за съществуващите проблеми. Така че, когато работите с няколко интерфейса, винаги ще трябва да посочите кой има предвид. Също така ще има проблеми, когато се опитвате да работите с два метода със същото име, в който случай те не могат да бъдат използвани. Ето защо, за такива случаи е необходимо да се грижим за наличието на обща реализация.

Абстрактни данни

абстрактен клас и интерфейсТази концепция е ключова при програмирането. В този случай абстракцията се разбира като независимо разглеждане и отделяне на интерфейса и неговото изпълнение. Нека да разгледаме един пример. Имаме телевизор, който е обект или модул. Той има интерфейс. По този начин има контроли за него, както и възпроизвеждане на звук и изображение. Колкото по-напреднал е интерфейсът, толкова по-удобен е телевизорът в процес на използване. Можем да превключваме програми, като кликаме върху бутоните. В този случай няма нужда да мислите за физическите процеси в телевизора. Те се грижат от специалисти, които събират устройството. Интересуваме се само от собствеността като потребители. Връщайки се към програмирането, можем да кажем, че те са чрез тази аналогия са интерфейса и изпълнението. Също така, ако човек е уверен в знанията си, тогава той може да "премахне" корицата от нашия хипотетичен телевизор и да го подобри. Въпреки че това може да доведе до местни успехи, в повечето случаи крайният резултат е отрицателен. Следователно, при програмирането достъпът се отхвърля и вътрешните компоненти се скриват за абстрактни данни. Принципът на този механизъм предвижда начини за предотвратяване на умишлено или случайно изменение на вътрешните компоненти. И когато говорят за абстрактни типове данни, те означават събирането им с набор от операции, които могат да бъдат извършени върху тях.

обекти

Вече разгледахме абстрактния клас и интерфейс като цяло и като цяло. Сега нека малко подробности нашите знания. Първо, ще обърнем внимание на обектите. С тях в общия случай се разбира част от обкръжаващата се реалност, която съществува в пространството и времето. Но е доста трудно формално да се дефинират обекти в рамките на програмирането (от философска и теоретична гледна точка). Ето защо това се прави благодарение на неговите свойства. Като пример може да се цитира следното: обектът може да бъде уникално идентифициран (има уникално име), той е в определено състояние и използва определен модел на поведение.

наследяване

абстрактни базови класовеТъй като програмирането се осъществява въз основа на йерархични дърво изграждане на взаимоотношения между обектите, въпросът е повдигнат за факта, че основните характеристики на видовете родителски библиотеки са били прехвърлени. Наследяването се разбира като връзка, когато се повтаря поведението и структурата на нещо друго. В обикновения живот това може да се намери навсякъде. Това също беше прехвърлено към програмирането по отношение на абстрактните елементи. За сравнение, можем да цитираме факта, че няма такъв организъм като птица. Това е абстрактно име. Като конкретен образец донасяте чайка, славей или врабче. Поради наследство, ние можем да използваме класни библиотеки и да ги развиваме за определена програма. Такъв инструмент ни позволява да създаваме нови обекти, като същевременно добавяме или променяме свойствата на вече създадените. Наследникът получава всички методи и полета на своя предшественик и, ако е необходимо, придобива собствените си качества. Поради факта, че има абстрактни елементи и принцип на наследството, има огромни възможности за промяна в рамките на обектно-ориентираното програмиране. Освен това, той ви позволява гъвкаво да подхожда към решаването на задачите. Когато наследявате, данните и функциите се предават в новия клас.

полиморфизъм

разликата между абстрактния клас и интерфейсаНеобходимо е, за да се приложат същите функции за решаване на различни видове задачи. В този случай се предвижда да има възможност за извършване на различни действия, чието съдържание ще зависи от вида обект, с който се извършва работата. Полиморфизмът се разбира като свойство на елементи, които имат един общ родител, изпълняват подобни проблеми в семантичен смисъл по различни начини. Ние правим аналогия с животните. Има такова действие - да тичам. Всички разбираме как се случва това. Но с различни животни (лъв, слон, шимпанзе, крокодил, костенурка) това действие ще се извърши по различен начин. В този случай, тяхното движение е отговорен предприемач, който, ако е необходимо може да причини за определен случай, известна рутина, алгоритъм и го изпълняват успешно. Това се извършва чрез набор от методи. В този случай във всеки отделен клас програмистът посочва кой обект има кои свойства са присъщи. Променяйки нещо в потомците, в този случай можете да постигнете определени, необходими действия. Това влияние се нарича обект полиморфизъм. Като цяло, абстрактният клас е изключително полезен програмен инструмент.

Споделяне в социалните мрежи:

сроден