Абстрактний клас та метод Java (на прикладі)

У цьому посібнику ми дізнаємося про абстрактні класи та методи Java за допомогою прикладів. Ми також дізнаємося про абстракцію на Java.

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

Абстрактний клас у Java неможливо створити за допомогою інстанції (ми не можемо створювати об'єкти абстрактних класів). Ми використовуємо abstractключове слово для оголошення абстрактного класу. Наприклад,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

Абстрактний клас може мати як звичайні методи, так і абстрактні методи. Наприклад,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

Щоб дізнатись про не абстрактні методи, відвідайте методи Java. Тут ми дізнаємося про абстрактні методи.

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

Метод, що не має свого тіла, відомий як абстрактний метод. Ми використовуємо те саме abstractключове слово для створення абстрактних методів. Наприклад,

 abstract void display();

Ось display()абстрактний метод. Тіло Росії display()замінено на ;.

Якщо клас містить абстрактний метод, тоді клас слід оголосити абстрактним. В іншому випадку це призведе до помилки. Наприклад,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Приклад: Абстрактний клас та метод Java

Хоча абстрактні класи неможливо створити, ми можемо створювати підкласи з них. Тоді ми можемо отримати доступ до членів абстрактного класу, використовуючи об’єкт підкласу. Наприклад,

 abstract class Language ( // method of abstract class public void display() ( System.out.println("This is Java Programming"); ) ) class Main extends Language ( public static void main(String() args) ( // create an object of Main Main obj = new Main(); // access method of abstract class // using object of Main class obj.display(); ) )

Вихідні дані

 Це програмування на Java

У наведеному вище прикладі ми створили абстрактний клас під назвою Language. Клас містить звичайний метод display().

Ми створили основний клас, який успадковує абстрактний клас. Зверніть увагу на заяву,

 obj.display();

Тут obj є об'єктом дочірнього класу Main. Ми викликаємо метод абстрактного класу, використовуючи об'єкт obj.

Впровадження абстрактних методів

Якщо абстрактний клас включає будь-який абстрактний метод, то всі дочірні класи, успадковані від абстрактного суперкласу, повинні забезпечувати реалізацію абстрактного методу. Наприклад,

 abstract class Animal ( abstract void makeSound(); public void eat() ( System.out.println("I can eat."); ) ) class Dog extends Animal ( // provide implementation of abstract method public void makeSound() ( System.out.println("Bark bark"); ) ) class Main ( public static void main(String() args) ( // create an object of Dog class Dog d1 = new Dog(); d1.makeSound(); d1.eat(); ) )

Вихідні дані

 Кору кори я можу їсти.

У наведеному вище прикладі ми створили абстрактний клас Animal. Клас містить абстрактний метод makeSound()та не абстрактний метод eat().

Ми успадкували підклас Собака від суперкласу Тварина. Тут підклас Dog забезпечує реалізацію для абстрактного методу makeSound().

Потім ми використовували об’єкт d1 класу Dog для виклику методів makeSound()і eat().

Примітка : Якщо клас Dog не забезпечує реалізацію абстрактного методу makeSound(), Dog також слід оголосити як абстрактний. Це тому, що підклас Собака успадковує makeSound()від Тварини.

Доступ до конструктора абстрактних класів

Абстрактний клас може мати такі конструктори, як звичайний клас. І ми можемо отримати доступ до конструктора абстрактного класу з підкласу, використовуючи superключове слово. Наприклад,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Тут ми використали super()конструктор Dog для доступу до конструктора Animal.

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

Абстракція Java

Основне використання абстрактних класів та методів полягає у досягненні абстракції в Java.

Абстракція - важлива концепція об’єктно-орієнтованого програмування, яка дозволяє нам приховувати непотрібні деталі та відображати лише необхідну інформацію.

Це дозволяє нам керувати складністю, пропускаючи або приховуючи деталі за допомогою простішої ідеї вищого рівня.

Практичним прикладом абстракції можуть бути гальма на мотоциклі. Ми знаємо, що робить гальмо. Коли ми застосуємо гальмо, мотоцикл зупиниться. Однак робота гальма від нас прихована.

Основною перевагою приховування роботи гальма є те, що тепер виробник може застосовувати гальмо по-різному для різних мотоциклів, однак те, що робить гальмо, буде однаковим.

Візьмемо приклад, який допоможе нам краще зрозуміти абстракцію Java.

Приклад 3: Абстракція Java

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Вихід :

 Кора кори Мяу

In the above example, we have created a superclass Animal. The superclass Animal has an abstract method makeSound().

The makeSound() method cannot be implemented inside Animal. It is because every animal makes different sounds. So, all the subclasses of Animal would have different implementation of makeSound().

So, the implementation of makeSound() in Animal is kept hidden.

Here, Dog makes its own implementation of makeSound() and Cat makes its own implementation of makeSound().

Note: We can also use interfaces to achieve abstraction in Java. To learn more, visit Java Interface.

Key Points to Remember

  • We use the abstract keyword to create abstract classes and methods.
  • An abstract method doesn't have any implementation (method body).
  • Клас, що містить абстрактні методи, також повинен бути абстрактним.
  • Ми не можемо створювати об’єкти абстрактного класу.
  • Для реалізації особливостей абстрактного класу ми успадковуємо від нього підкласи та створюємо об’єкти підкласу.
  • Підклас повинен замінити всі абстрактні методи абстрактного класу. Однак, якщо підклас оголошено абстрактним, не обов'язково замінювати абстрактні методи.
  • Ми можемо отримати доступ до статичних атрибутів та методів абстрактного класу, використовуючи посилання на абстрактний клас. Наприклад,
     Animal.staticMethod();

Цікаві статті...