Елементи на Java обектния модел: абстрактна класа, интерфейс

Основната идея на абстрактния клас е следната теза: понякога не са готови класове, а в "сурова" форма. Такива детайли не могат да се използват директно (създаване на копия).

Какво представлява абстрактният клас на Java

Да разгледаме друг пример. В пакета Java.util има абстрактен клас Java. Той не прилага конкретен календар, който се използва например в Западна и Източна Европа, Китай, Северна Корея, Тайланд и др. Но има много полезни функции, като добавяне на няколко дни до определена дата: тези функции са необходими за всеки - всяко прилагане на календара. Не можете да генерирате екземпляр от абстрактен клас.


Абстрактни класове, абстрактни Java методи

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


Ако в даден клас има абстрактни методи, тогава класът е абстрактен. Преди класа на думата се поставя и абстрактната ключова дума в заглавието на метода. След заглавието на този метод трябва да зададете точка и запетая. В Java абстрактен клас не може да генерира копия. Ако искаме да забраним тяхното създаване, дори и да няма абстрактни методи в класа, тогава класът може да бъде обявен за абстрактен. Но ако в класа има поне един абстрактен метод, тогава класът трябва да бъде абстрактен. Невъзможно е класът да е както абстрактно, така и окончателно, както и методът. Методът не може да бъде абстрактен, личен, статичен, роден. За да могат наследниците на класа да бъдат обявени за не-абстрактни и да създават копия от тях, те трябва да прилагат всички абстрактни методи на бащата. Самият клас може да използва своите абстрактни методи. Пример:
  • абстрактна класа AClass {
  • публичен абстрактен void метод (int a);
  • }
  • клас BClass разширява AClass {
  • публичен void метод (int a) {
  • //body
  • }
  • ] Разрешени са променливи от тип абстрактна класа. Те могат да се отнасят до не-абстрактен ученик от този клас или да имат нулеви стойности.

    Интерфейси в Java - Алтернатива на множество наследства

    Java няма множествено наследяване, защото тогава има определени проблеми. Класът не може да наследи от няколко класа. Но той може да реализира няколко интерфейса. Интерфейси и абстрактни Java класове са подобни понятия,но не съвпадат. Интерфейсът може да бъде обявен за публичен, след това да е достъпен за всички или да не можете да посочите публичния модификатор, след което интерфейсът е достъпен само в пакета ви. Ключовата дума abstract не е задължителна, защото интерфейсът е абстрактен, така че може да бъде зададен.

    Декларация за интерфейс

    Той започва с заглавие и може да бъде последвано от публичната ключова дума, последвана от думата интерфейс. След това могат да се следват разширенията на думите и списъкът на интерфейсите, от които може да се наследи даден. Не е позволено да се повтаря тук и е невъзможно връзката на наследството да образува циклична зависимост. Тогава идва тялото на интерфейса, затворено в къдрави скоби. В интерфейса се декларират елементите: полеви константи и абстрактни методи. Всички полета са публични статични окончателни - не са необходими всички тези модификатори. Всички методи се считат за публично абстрактни - тези модификатори също могат да бъдат определени. Сега се говори за абстрактния клас от интерфейса на Java.
  • публичен интерфейс AI разширява B, C, D {
  • //тяло
  • }
  • За да се обяви клас като наследник на интерфейса, използвайте ключовите инструменти:
  • клас AClass приспособления BI, CI, DI {}
  • Тоест, ако в декларацията за клас след изпълнение на името на интерфейса е посочено, тогава класът го изпълнява. Наследниците на този клас получават своите елементи, така че и те го осъзнават. Допускат се и променливи тип интерфейс. Те могат да се отнасят до типа на класа, който изпълнява този интерфейс, или нула. Тези променливи имат всички елементи в класа Object, защото обектите се генерират от класове и тези, от своя страна, се наследяват от класа.Object. В тази статия разгледахме някои елементи на обектния модел Java - абстрактни класове, абстрактни методи и интерфейси.

    Свързани публикации