Що таке абстрактний клас на 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 та реалізовувати декілька інтерфейсів, але один інтерфейс може розширювати лише інший інтерфейс. Абстрактний клас може забезпечити реалізацію інтерфейсу, але інтерфейс не може цього зробити.
  • Ми використовуємо ключові слова з реалізацією та розширенням для реалізації та розширення інтерфейсу та класів відповідно.
  • За допомогою методу ми можемо змінювати або отримати доступ до нестатичних та не кінцевих змінних абстрактного класу.

Висновок

  • Абстрактний клас, що використовується для часткової абстракції. Абстрактний клас неможливо ініціювати за допомогою нового ключового слова.
  • Абстрактний метод не має тіла і завжди закінчується крапкою з комою (;).
  • Анотаційний клас містить абстрактні та не абстрактні методи.
  • Підклас абстрактного суперкласу, повинен забезпечити реалізацію всіх абстрактних методів, якщо він не передбачений, тоді він повинен оголосити себе абстрактним класом.
  • Підклас може бути абстрактним, навіть якщо суперклас конкретний.
  • Неабстрактний клас не може містити абстрактних методів. Також абстрактний метод нестатичний.
  • Отже, можна сказати, що абстрактні класи містять і абстрактні, і конкретні методи, тому вони не можуть забезпечити 100% абстракцію. Це процес приховування складної логіки від кінцевого споживача і показує їм лише послуги. Підклас може бути абстрактним, навіть якщо його надклас конкретний, і він також може бути використаний як тип даних.
  • Абстрактний клас може мати статичні поля та статичні методи. Ви можете використовувати цих статичних членів із посиланням на клас.

Рекомендовані статті

Це посібник з абстрактного класу на Java. Тут ми обговорюємо синтаксис та приклади абстрактного класу на Java разом із абстрактним класом та інтерфейсом. Ви також можете переглянути наступні статті, щоб дізнатися більше -

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