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

  • Абстрактните часове са като всички други нормални класове в Java. Основната разлика между абстрактния клас и нормалния клас е да създадем абстрактния клас, който трябва да използваме ключовата дума „ABSTARCT“. Това е отделяне на реализацията на класа.
  • Те използваха за определяне на много често срещаните характеристики на подкласовете му. Такъв тип клас, рефериран като Абстрактен клас.
  • Най-важното е, че не можем да създадем обект от абстрактен клас.
  • Абстрактните класове могат да съдържат абстрактни, както и нео-абстрактни методи. Те не могат да съдържат тяло на абстрактния метод, който може да бъде предоставен само от подклас. Ако подкласът не осигурява реализацията на абстрактния метод, тогава трябва да го направим изчерпателно.
  • С други думи, ако клас съдържа абстрактен метод, той трябва да се определи като ABSTARCT.
  • С помощта на абстрактни класове можем да групираме няколко java класа заедно, това също оптимизира кода и прави кода по-четим и намалява излишността. Той също така предоставя шаблон за бъдещи класове.

Синтаксис на абстрактния клас в Java

Как работи абстрактният клас в Java?

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

Примери за абстрактния клас в Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

изход:

В горния пример имаме ЧОВЕК като абстрактна класа, която определя общите нужди, харесвания и нехаресвания на човек. Има различни видове хора с различни харесвания и нехаресвания. Така всеки човек може да осигури конкретно изпълнение на това, което харесва. Това ще бъде специфично само за тях.

Основното предимство на абстрактния клас е, че имаме специфична реализация на методи според изискване, което също води до намаляване на излишността, увеличава четивността на кода, скрива прилагането на методи и по този начин осигурява частична абстракция.

Можем да имаме още един пример, за да разберем кога трябва да използваме абстрактни класове.

  • Трябва да използваме абстрактен клас, когато искаме да споделим обща функционалност между различни класове с конкретно изпълнение.
  • В абстрактните класове полетата не трябва да са статични и окончателни, можем също така да имаме конкретни методи, определени като частни, обществени и защитени.

Да речем, че имаме един клас по животни. Има разновидности на животни, които имаме на земята и всички те са различни един от друг в някакъв или основен смисъл. Той ще съдържа всички общи черти на всички.

Сега този клас животни не може да има методи, специфични за всяко животно. Така че чрез концепцията за клас Абстракт, ние можем да реализираме тази функционалност без излишен код.

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

В родителския клас, т.е. Animal, имаме един общ абстрактен метод, наречен техният Sound (). Следователно всеки детски клас трябва да преодолее този метод и да осигури собствено специфично изпълнение.

Абстрактен клас и интерфейс?

  • Абстрактен клас и интерфейс и двете се използват за постигане на абстракция в Java. Абстрактен клас осигурява частична абстракция, докато интерфейсът осигурява 100% или пълна абстракция.
  • По подразбиране променливите в интерфейса са окончателни. Но абстрактният клас съдържа и нефинална променлива. Подобно абстрактният клас може да има и статична, нестатична променлива. Но интерфейсът ще съдържа само финална и статична променлива.
  • Член променливите на абстрактен клас могат да бъдат като частни, обществени, защитени, но по подразбиране са публични в случай на интерфейс.
  • Абстрактен клас може да разшири друг клас Java и да приложи няколко интерфейса, но един интерфейс може да разшири само друг интерфейс. Абстрактен клас може да осигури реализация на интерфейс, но интерфейс не може да го направи.
  • Използваме изпълнения и разширяване на ключова дума за съответно изпълнение и разширяване на интерфейс и класове.
  • Чрез метод можем да модифицираме или да получим достъп до нестатичните и не финалните променливи на абстрактния клас.

заключение

  • Абстрактен клас, използван за предоставяне на частична абстракция. Абстрактен клас не може да бъде създаден чрез използване на ключовата дума NEW.
  • Абстрактният метод няма тяло и винаги завършва със запетая (;).
  • Абстрактният клас съдържа абстрактни и не абстрактни методи.
  • Подклас на абстрактен суперклас, трябва да се осигури изпълнение на всички абстрактни методи, ако той не предоставя, то трябва да се декларира като абстрактен клас.
  • Подклас може да бъде абстрактно, дори ако суперкласът е конкретен.
  • Не-абстрактният клас не може да съдържа абстрактни методи. Също така абстрактният метод е нестатичен.
  • Следователно можем да кажем, че абстрактните класове съдържат и абстрактни, и конкретни методи, така че те не могат да осигурят 100% абстракция. Това е процес на скриване на сложната логика от крайния потребител и им показва само услугите. Подклас може да бъде абстрактна, дори ако суперкласът му е конкретен и може да се използва и като тип данни.
  • Абстрактният клас може да има статични полета и статични методи. Можете да използвате тези статични членове с референтен клас.

Препоръчителни статии

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

  1. Java интерфейс срещу абстрактен клас
  2. BoxLayout в Java
  3. Какво е Java SE?
  4. Какво е наследяване на Java?
  5. Как работи абстрактният клас в PHP?
  6. Абстрактен клас по C ++
  7. Ръководство за статичен метод в PHP
  8. Пълен преглед на статичния метод на JavaScript