HeadofState - абстрактный (по английскому значению слова абстрактный) термин.
Нет ни одной страны в мире, где официальное название главы государства - глава государства.
Глава государства, хотя и абстрактно по языку и существованию, является суперклассом или суперкатегорией титулов, таких как султан, президент, премьер, премьер-министр, любимый отец и т. Д.
Таким образом, даже если существование главы государства не может быть реализовано в его абстрактной форме, вы можете создать экземпляр (демократическим путем, по наследству или путем переворота) президента, премьер-министра или любого другого человека. .
Так, например, был создан премьер-министр, его можно приравнять к его абстрактной родительской терминологии "Глава государства".
Таким образом, хотя экземпляр абстрактного класса не может быть создан, реализация этого абстрактного класса может быть реализована. Вот что могут сделать фабрики. Фабрики являются средством создания экземпляров абстрактных классов.
Так же, как абстрактные классы, интерфейсы не могут быть созданы, но должны быть реализованы. Абстрактные классы реализованы частично, тогда как сами интерфейсы полностью не реализованы. Абстрактные классы и интерфейсы зависят от производных классов для завершения их существования. Конечно, техническая терминология навязчивого OO-пуриста прояснит, что абстрактные классы «расширены», а интерфейсы «унаследованы».
Например, HttpServletRequest - это интерфейс. Вы не можете создать экземпляр этого напрямую. Когда ваш JSP получает запрос http-сервлета, он работает одинаково, независимо от того, используете ли вы Jetty или Tomcat. Однако, если вы внимательно осмотрите, фактический класс, созданный фабрикой HttpServletRequest в Jetty, отличается от класса, созданного в Tomcat. Но, поскольку оба они реализуют HttpServletRequest, эти экземпляры можно просто приравнять к переменной, тип которой HttpServletRequest.
Вы должны прочитать об абстрактных классах по сравнению с интерфейсами и о том, как интерфейсы составляются для обеспечения псевдо-множественного наследования в Java. Как только вы поймете роль интерфейсов, вы поймете абстрактные классы. В сфере объектно-ориентированных пламенных войн некоторые люди думают, что интерфейсы были блестящим прорывом в множественном наследовании. Некоторые люди думают, что интерфейсы не имеют ничего общего с множественным наследованием. По моему собственному, менее скромному мнению, интерфейсы - плохая и неудавшаяся попытка социалистической патерналистской снисходительности предотвратить меня от неприятностей, которые предполагают, что я не знаю, как заботиться о себе.