logo

Абстрактний клас на Java

Клас, який оголошено за допомогою ключового слова abstract, називається абстрактним класом у Java . Він може мати абстрактні та неабстрактні методи (метод з тілом).

Перш ніж вивчати абстрактний клас Java, давайте спочатку розберемося з абстракцією в Java.

як відключити режим розробника на android

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

Абстракція це процес приховування деталей реалізації та показ лише функціональних можливостей користувачеві.

Іншим способом він показує користувачеві лише важливі речі та приховує внутрішні деталі, наприклад, надсилання SMS, де ви вводите текст і надсилаєте повідомлення. Ви не знаєте внутрішньої обробки доставки повідомлень.

Абстракція дозволяє зосередитися на тому, що є об'єкт робить замість того, як це робить.

Способи досягнення абстракції

Існує два способи досягнення абстракції в java

  1. Абстрактний клас (від 0 до 100%)
  2. Інтерфейс (100%)

Абстрактний клас на Java

Клас, який оголошено як абстрактний, називається an абстрактний клас . Він може мати абстрактні та неабстрактні методи. Його потрібно розширити та впровадити його метод. Його неможливо створити.

Пункти, які слід пам’ятати

  • Абстрактний клас повинен бути оголошений за допомогою ключового слова abstract.
  • Він може мати абстрактні та неабстрактні методи.
  • Його неможливо створити.
  • Це може мати конструктори а також статичні методи.
  • Він може мати фінальні методи, які змусять підклас не змінювати тіло методу.
Правила для абстрактного класу Java

Приклад абстрактного класу

 abstract class A{} 

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

Метод, який оголошено як абстрактний і не має реалізації, відомий як абстрактний метод.

Приклад абстрактного методу

 abstract void printStatus();//no method body and abstract 

Приклад абстрактного класу, який має абстрактний метод

У цьому прикладі Bike — це абстрактний клас, який містить лише один запуск абстрактного методу. Його реалізацію забезпечує клас Honda.

 abstract class Bike{ abstract void run(); } class Honda4 extends Bike{ void run(){System.out.println('running safely');} public static void main(String args[]){ Bike obj = new Honda4(); obj.run(); } } 
Перевірте зараз
 running safely 

Розуміння реального сценарію абстрактного класу

У цьому прикладі Shape є абстрактним класом, а його реалізація забезпечується класами Rectangle і Circle.

Здебільшого ми не знаємо про клас реалізації (який прихований для кінцевого користувача), а об’єкт класу реалізації надається заводський метод .

А заводський метод це метод, який повертає екземпляр класу. Про фабричний спосіб ми дізнаємося пізніше.

У цьому прикладі, якщо ви створюєте екземпляр класу Rectangle, буде викликано метод draw() класу Rectangle.

Файл: TestAbstraction1.java

 abstract class Shape{ abstract void draw(); } //In real scenario, implementation is provided by others i.e. unknown by end user class Rectangle extends Shape{ void draw(){System.out.println('drawing rectangle');} } class Circle1 extends Shape{ void draw(){System.out.println('drawing circle');} } //In real scenario, method is called by programmer or user class TestAbstraction1{ public static void main(String args[]){ Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method s.draw(); } } 
Перевірте зараз
 drawing circle 

Ще один приклад абстрактного класу в java

Файл: TestBank.java

 abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 8;} } class TestBank{ public static void main(String args[]){ Bank b; b=new SBI(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); b=new PNB(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); }} 
Перевірте зараз
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Абстрактний клас, що має конструктор, член даних і методи

Абстрактний клас може мати елемент даних, абстрактний метод, тіло методу (неабстрактний метод), конструктор і навіть метод main().

Файл: TestAbstraction2.java

весняний черевик
 //Example of an abstract class that has abstract and non-abstract methods abstract class Bike{ Bike(){System.out.println('bike is created');} abstract void run(); void changeGear(){System.out.println('gear changed');} } //Creating a Child class which inherits Abstract class class Honda extends Bike{ void run(){System.out.println('running safely..');} } //Creating a Test class which calls abstract and non-abstract methods class TestAbstraction2{ public static void main(String args[]){ Bike obj = new Honda(); obj.run(); obj.changeGear(); } } 
Перевірте зараз
 bike is created running safely.. gear changed 

Правило: якщо в класі є абстрактний метод, цей клас має бути абстрактним.

 class Bike12{ abstract void run(); } 
Перевірте зараз
 compile time error 

Правило: якщо ви розширюєте абстрактний клас, який має абстрактний метод, ви повинні або надати реалізацію методу, або зробити цей клас абстрактним.


Ще один реальний сценарій абстрактного класу

Абстрактний клас також може бути використаний для забезпечення певної реалізації інтерфейс . У такому випадку кінцевий користувач може не бути змушений перевизначати всі методи інтерфейсу.

Примітка. Якщо ви новачок у Java, спочатку вивчіть інтерфейс і пропустіть цей приклад.

 interface A{ void a(); void b(); void c(); void d(); } abstract class B implements A{ public void c(){System.out.println('I am c');} } class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Перевірте зараз
 Output:I am a I am b I am c I am d