Абстракция в Java

В какво е абстракцията Java?

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

Кликнете тук ако видеото не е достъпно

Нека да проучим абстракцията в ООП с пример:

Да предположим, че искате да създадете банково приложение и трябва да съберете цялата информация за вашия клиент. Има шансове да излезете със следната информация за клиента

Абстракция в Java
Абстракция в Java

Но не цялата информация по-горе е необходима за създаване на банково приложение. Така че трябва да изберете само полезна информация за вас банково приложение от този басейн. Данни като име, адрес, данъчна информация и т.н. имат смисъл за банково приложение, което е пример за абстракция в OOPs

Абстракция в Java

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

Разлика между абстракция и капсулиране

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

Разлика между абстрактен клас и интерфейс

Абстрактен клас Interface
Един абстрактен клас може да има както абстрактни, така и неабстрактни методи. Интерфейсът може да има само абстрактни методи.
Не поддържа множество наследявания. Поддържа множество наследявания.
Може да осигури изпълнението на интерфейса. Не може да осигури имплементацията на абстрактния клас.
Абстрактен клас може да има защитени и абстрактни публични методи. Един интерфейс може да има само публични абстрактни методи.
Абстрактен клас може да има крайна, статична или статична крайна променлива с произволен спецификатор за достъп. Интерфейсът може да има само публична статична крайна променлива.

Какво е абстрактен клас?

АБСТРАКТЕН КЛАС е вид клас в Java, които декларират един или повече абстрактни методи. Тези класове могат да имат както абстрактни методи, така и конкретни методи. Един нормален клас не може да има абстрактни методи. Абстрактен клас е клас, който съдържа поне един абстрактен метод. Можем да разберем концепцията от пример за форма в java.

Разгледайте следната йерархия на класове, състояща се от клас Shape, който е наследен от три класа Rectangle, Circle и Triangle. Класът Shape е създаден, за да спести общи атрибути и методи, споделяни от трите класа Rectangle, Circle и Triangle. CalculateArea() е един такъв метод, споделен от трите дъщерни класа и присъстващ в клас Shape.

Абстрактен клас в Java

Пример за абстракция на формата

Сега приемете, че пишете код за създаване на обекти за класовете, изобразени по-горе. Нека наблюдаваме как тези обектите ще изглеждат в практически свят. Обект от класа 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, един и същи набор от данни може да се използва в различни приложения.