Методи та класи abstract Java
Тут ми розповімо ще про один надзвичайно корисний інструмент об'єктно-орієнтованого програмування – про концепціюабстрактного(abstract)класу. Використовуючи її на практиці, ви зможете оголосити клас, представивши тільки частину його реалізації та заздалегідь передбачивши можливість перевизначення всіх чи деяких методів у похідних класах. До цих пір ми мали справу тільки з конкретними (concrete) класами, в яких кожен метод був оголошений повністю.
Припустимо, наприклад, що маємо завдання створення деякої інструментальної інфраструктури, що дозволяє тестувати продуктивність тих чи інших фрагментів коду Java. У реалізації відповідного класу, ймовірно, слід було б передбачити, як запускати процедуру тестування на виконання та вимірювати її результати, але не варто заздалегідь жорстко обговорювати, які саме тести виконуватимуться. Більшість абстрактних класів задовольняє схему, в якій передбачається, що відсутні деталі реалізації повинні бути заповнені кимось, хто знайомий з відповідною предметною областю, - у такому випадку говорять про схемушаблонів.У багатьох випадках код, що відноситься до сфери компетенції самого базового абстрактного класу – це хороший претендент на набуття статусу final, що гарантує, що контракт класу не буде порушено. У нашому прикладі "відсутня деталь реалізації" - це той код, який повинен бути схильний до тестування. Оголошення класу може виглядати так: