Абстрактни Java методи и класове
Тук ще представим друг изключително полезен обектно-ориентиран инструмент за програмиране - концепцията абстрактно (резюме) клас. Използвайки го на практика, можете да декларирате клас, като предоставите само част от неговото изпълнение и предвидите възможността за отмяна на всички или някои от методите в производни класове. Досега сме се занимавали само с специфични (конкретни) класове, в които всеки метод е деклариран изцяло.
Да предположим например, че сме изправени пред задачата да създадем някаква инструментална инфраструктура, която ни позволява да тестваме производителността на определени парчета Java код. При изпълнението на съответния клас вероятно би било необходимо да се предвиди как да се стартира тестовата процедура за изпълнение и да се измерват резултатите от нея, но не би си струвало предварително да се определят строго кои тестове ще бъдат изпълнени. Повечето абстрактни класове удовлетворяват схема, която предполага, че липсващите подробности за изпълнението трябва да бъдат попълнени от някой друг, който е запознат със съответната предметна област - в този случай се говори за схема шаблони. В много случаи кодът от компетентността на базовия абстрактен клас сам по себе си е добър кандидат за окончателен статус, като гарантира, че договорът на класа не е нарушен. В нашия пример "липсващата подробност за изпълнение" е кодът, който трябва да бъде тестван. Декларация за клас може да изглежда така: