Java Абстракція
Абстрактні класи та методи
Абстракція (абстрагування) даних – це процес приховування певних деталей і відображення лише важливої інформації для користувача.
Абстракції можна досягти за допомогою абстрактних класів або інтерфейсів (про які ви дізнаєтеся більше в наступному розділі).
Ключове слово abstract
є модифікатором доступу, який використовується для класів і методів:
- Абстрактний клас: це обмежений клас, який не можна використовувати для створення об’єктів (щоб отримати до нього доступ, його потрібно успадкувати від іншого класу).
- Абстрактний метод: можна використовувати лише в абстрактному класі, і він не має тіла. Тіло надається підкласом (успадковується від).
Абстрактний клас може мати як абстрактні, так і звичайні методи:
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
З наведеного вище прикладу неможливо створити об’єкт класу Animal:
Animal myObj = new Animal(); // згенерує помилку
Щоб отримати доступ до абстрактного класу, його потрібно успадкувати від іншого класу. Давайте перетворимо клас Animal, який ми використовували в розділі Поліморфізм, на абстрактний клас:
Пам’ятайте з розділу про успадкування, що ми використовуємо ключове слово extends
для успадкування від класу.
Приклад
// Абстрактний клас
abstract class Animal {
// Абстрактний метод (не має тіла)
public abstract void animalSound();
// Звичайний метод
public void sleep() {
System.out.println("Zzz");
}
}
// Підклас (успадковано від Animal)
class Pig extends Animal {
public void animalSound() {
// Тіло animalSound() надається тут
System.out.println("The pig says: wee wee");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Створити об’єкт Pig
myPig.animalSound();
myPig.sleep();
}
}
Спробуйте самі »
Чому і коли використовуються абстрактні класи та методи?
Щоб забезпечити безпеку, приховайте певні деталі та показуйте лише важливі деталі об’єкта.
Примітка: абстракції також можна досягти за допомогою інтерфейсів, про які ви дізнаєтеся більше в наступному розділі.