Термин абстрактный подразумевает, что что-то не осязаемое, а скорее понятие. В то время как реализация - это реальная вещь, которую можно использовать. Слово бетон используется для описания последнего.
Абстрактные классы - это классы, которые имеют смесь из нуля или более реализованных и нуля или больше нереализованных методов, которые используются для создания других классов с большей или специальной функциональностью. Таким образом, любой класс, который является подклассом абстрактного класса, может иметь:
- Набор основных реализованных методов, унаследованных от абстрактного класса, которые не обязательно будут различаться от одной реализации к другой.
- Набор сигнатур методов (нереализованных методов), указанных абстрактным классом, которые должны быть реализованы в подклассах и чьи реализации могут отличаться от одной реализации к другой в зависимости от требований подкласса.
- Любые другие дополнительные методы, которые авторы требуется ощущение подкласса, которое не указано в абстрактном классе.
1 и 2 выше составляют абстрактный класс.
В случае (1) выше, эти методы могут могут быть отменены, если автор подкласса считает это необходимым (если только эти методы не объявлены final ).
Наконец, абстрактные классы могут создавать подклассы других абстрактных классов, используя ту же философию, что и выше.