Java Abstraction

Оновлено: 22.05.2023

Абстрактні класи та методи

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

Ключове слово abstract - це модифікатор не доступу, який використовується для класів і методів:

Абстрактний клас: обмежений клас, який не можна використовувати для створення об'єктів (щоб отримати до нього доступ, він повинен бути успадкований від іншого класу). Абстрактний метод: може використовуватися тільки в абстрактному класі, і він не має тіла. Тіло надається підкласом (успадкованим від нього).

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

abstract class Animal {
  public abstract void animalSound();
  public void sleep() {
    System.out.println("Zzz");
  }
}

З вищенаведеного прикладу неможливо створити об'єкт класу Animal:

Animal myObj = new Animal(); // will generate an error

Щоб отримати доступ до абстрактного класу, його потрібно успадкувати від іншого класу. Давайте перетворимо клас Animal, який ми використовували у розділі Поліморфізм, на абстрактний клас:

Пам'ятайте з розділу Спадкування, що ми використовуємо ключове слово extends для успадкування від класу.
// Abstract class
abstract class Animal {
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep() {
    System.out.println("Zzz");
  }
}

// Subclass (inherit from Animal)
class Pig extends Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}
Навіщо і коли використовувати абстрактні класи та методи? Для досягнення безпеки - приховати певні деталі і показати тільки важливі деталі об'єкта. Примітка: Абстракція також може бути досягнута за допомогою інтерфейсів, про які ви дізнаєтесь більше в наступному розділі.