Абстракция в Java
В какво е абстракцията Java?
абстракция е концепцията за обектно-ориентирано програмиране, която "показва" само съществени атрибути и "скрива" ненужната информация. Основната цел на абстракцията е да скрие ненужните детайли от потребителите. Абстракцията е избиране на данни от по-голям набор, за да се покажат на потребителя само подходящи подробности за обекта. Помага за намаляване на сложността и усилията при програмиране. Това е една от най-важните концепции на ООП.
Кликнете тук ако видеото не е достъпно
Нека да проучим абстракцията в ООП с пример:
Да предположим, че искате да създадете банково приложение и трябва да съберете цялата информация за вашия клиент. Има шансове да излезете със следната информация за клиента
Но не цялата информация по-горе е необходима за създаване на банково приложение. Така че трябва да изберете само полезна информация за вас банково приложение от този басейн. Данни като име, адрес, данъчна информация и т.н. имат смисъл за банково приложение, което е пример за абстракция в OOPs
Тъй като сме извлекли/премахнали/избрали информацията за клиента от по-голям набор, процесът се нарича абстракция в ООП. Въпреки това, същата информация, веднъж извлечена, може да се използва за широк спектър от приложения. Например, можете да използвате едни и същи данни за кандидатстване за болница, приложение за портал за работа, правителствена база данни и т.н. с малка или никаква промяна. Следователно те стават вашите основни данни. Това е предимство на абстракцията в ООП.
Разлика между абстракция и капсулиране
абстракция | Капсулирането |
---|---|
Абстракцията в обектно-ориентираното програмиране решава проблемите на ниво дизайн. | Капсулирането решава нивото на изпълнение. |
Абстракцията в програмирането е за скриване на нежелани детайли, докато показва най-съществената информация. | Капсулирането означава обвързване на кода и данните в едно цяло. |
Абстракция на данни в Java позволява фокусиране върху това какво трябва да съдържа информационният обект | Капсулирането означава скриване на вътрешните детайли или механиката на това как даден обект прави нещо от съображения за сигурност. |
Разлика между абстрактен клас и интерфейс
Абстрактен клас | Interface |
---|---|
Един абстрактен клас може да има както абстрактни, така и неабстрактни методи. | Интерфейсът може да има само абстрактни методи. |
Не поддържа множество наследявания. | Поддържа множество наследявания. |
Може да осигури изпълнението на интерфейса. | Не може да осигури имплементацията на абстрактния клас. |
Абстрактен клас може да има защитени и абстрактни публични методи. | Един интерфейс може да има само публични абстрактни методи. |
Абстрактен клас може да има крайна, статична или статична крайна променлива с произволен спецификатор за достъп. | Интерфейсът може да има само публична статична крайна променлива. |
Какво е абстрактен клас?
АБСТРАКТЕН КЛАС е вид клас в Java, които декларират един или повече абстрактни методи. Тези класове могат да имат както абстрактни методи, така и конкретни методи. Един нормален клас не може да има абстрактни методи. Абстрактен клас е клас, който съдържа поне един абстрактен метод. Можем да разберем концепцията от пример за форма в java.
Разгледайте следната йерархия на класове, състояща се от клас Shape, който е наследен от три класа Rectangle, Circle и Triangle. Класът Shape е създаден, за да спести общи атрибути и методи, споделяни от трите класа Rectangle, Circle и Triangle. CalculateArea() е един такъв метод, споделен от трите дъщерни класа и присъстващ в клас Shape.
Сега приемете, че пишете код за създаване на обекти за класовете, изобразени по-горе. Нека наблюдаваме как тези обектите ще изглеждат в практически свят. Обект от класа rectangle ще даде правоъгълник, форма, която толкова често наблюдаваме в ежедневието.
Обект от класа триъгълник ще даде триъгълник, отново обичайна ежедневна форма.
Но как би изглеждал обект от Class Shape в практически свят??
Ако наблюдавате класа Shape сервира в нашата цел за постигане наследство и полиморфизъм. Но не е създаден, за да бъде създаден. Такива класове могат да бъдат етикетирани абстрактен. Абстрактен Java клас не може да бъде инстанциран.
Синтаксис:
abstract class Shape{ // code }
Възможно е да НЕ обозначавате клас Shape като Abstract и след това да го инстанциирате. Но такъв обект няма да има никаква полза във вашия код и ще отвори място за потенциални грешки. Следователно това не е желателно.
Какво представляват абстрактните методи Java?
АБСТРАКТЕН МЕТОД in Java, е метод, който има само дефиницията на метода, но не съдържа изпълнение. Метод без тяло е известен като абстрактен метод. Трябва да се декларира в абстрактен клас. Абстрактният метод никога няма да бъде окончателен, защото абстрактният клас трябва да имплементира всички абстрактни методи.
Както всички знаем, формулата за изчисляване на площта на правоъгълник, кръг и триъгълник е различна. Методът calculateArea() ще трябва да бъде заменен от наследяващите класове. Няма смисъл да го дефинирате в класа Shape, но трябва да сме сигурни, че всички наследяващи класове имат метода.
Такива методи могат да бъдат етикетирани абстрактно.
Синтаксис:
abstract public void calculateArea();
За абстрактен метод, не се изисква внедряване. Дефинира се само сигнатурата на метода.
Пример за код на абстракция
abstract class Shape{ abstract void calculateArea(); } class guru99 extends Shape{ void calculateArea(){System.out.println("Area of Shape");} public static void main(String args[]){ Shape obj = new guru99(); obj.calculateArea(); } }
Предимства на абстракцията
- Основното предимство от използването на абстракция в Програмиране е, че ви позволява да групирате няколко свързани класа като братя и сестри.
- Абстракцията в обектно-ориентираното програмиране помага да се намали сложността на процеса на проектиране и внедряване на софтуер.
Крайна ключова дума в Java
Крайният модификатор се прилага към класове, методи и променливи. Значението на final варира от контекст до контекст, но основната идея е една и съща.
- Последният клас не може да бъде наследен
- Крайната променлива става константа и нейната стойност не може да бъде променена.
- Крайният метод не може да бъде отменен. Това се прави от съображения за сигурност и тези методи се използват за оптимизация.
Пример : - Да научите абстрактни и крайни ключови думи
Стъпка 1) Копирайте следния код в редактор.
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
Стъпка 2) Запазете, компилирайте и стартирайте кода.
Стъпка 3) Грешка =? Абстрактният метод не е имплементиран в класа Rectangle. За да коригирате проблема, разкоментирайте ред #15.
Стъпка 4) Разкоментирайте ред # 13. Запазете и компилирайте кода.
Стъпка 5) Грешка = ? променлива b е крайна
Кога да използвате абстрактни методи и абстрактен клас?
Абстрактните методи се декларират най-вече там, където два или повече подкласа също правят едно и също нещо по различни начини чрез различни реализации. Той също така разширява същия абстрактен клас и предлага различни реализации на абстрактните методи.
Абстрактните класове помагат да се опишат общи типове поведения и йерархията на класовете за обектно-ориентирано програмиране. Той също така описва подкласове, за да предложи подробности за изпълнението на абстрактния клас.
Резюме:
- Абстракцията в програмирането е процес на избиране на важни набори от данни за Обект във вашия софтуер и оставяйки незначителните.
- След като сте моделирали вашия обект с помощта на абстракция на данни в Java, един и същи набор от данни може да се използва в различни приложения.