Начинаем программировать на языке Java

Выполним сборка металлоконструкций в Новосибирске и пригороде. Металлоконструкции на заказ.

Абстрактные классы



Абстрактные классы

Многие программисты, использующие язык Си++, уже знакомы с понятием абстрактных классов. В языке программирования Java абстрактные классы весьма схожи со своими "родственниками" из Си++ и отличаются лишь деталями реализации. Но тем не менее давайте рассмотрим абстрактные классы Java подробно.

Предположим, вы создаете некую модель бытовой техники и вам требуются отдельные классы для описания каждой детали этого устройства. Логично создать единую электронную форму для занесения в нее сведений о любом аппарате, в которой будет стоять ссылка на некий класс "Бытовое устройство". Теперь вы можете смело ссылаться из этой формы на любой класс, унаследованный от класса "Бытовое устройство". Это может быть "Пылесос", "Электрогриль" и т. п. При этом все ссылки будут работать корректно, несмотря на то, что они могут указывать на совершенно разные классы. Главное, чтобы у них был некий общий предок. Но вот что интересно. Когда мы начинаем пользоваться классами, мы создаем их экземпляры с помощью вызовов new. Остается неясным, зачем создавать экземпляр класса "Бытовое устройство", ведь товара с таким наименованием просто не существует! Какой покупатель станет платить за непонятный агрегат "Бытовое устройство"! Стало быть, это всего лишь удобный способ задания общего класса-предка. А раз не требуется его реализация, то можно просто создать пустой класс, в котором будут описаны (но не реализованы!) некоторые общие методы для работы с данными внутри класса, например методы "Установить величину напряжения питания" или "Включить устройство". Полученный класс будет называться абстрактным. Все классы - потомки абстрактного класса унаследуют его данные и методы, но должны будут сами предоставить код тех методов, которые класс-предок оставил нереализованными, т. е. абстрактными. Резонно спросить, почему базовый абстрактный класс не реализует методы самостоятельно, а отдает это на откуп своим потомкам. Ответ прост: для каждого устройства потребуется своя собственная методика включения и установки напряжения питания. К примеру, пылесос можно включить нажатием на кнопку, а сушилка для рук запускается автоматически, когда под нее подставляют руки. Такие тонкости может знать только класс самого устройства, а значит, ему и отвечать за реализацию соответствующих методов.




Начало  Назад  Вперед



Книжный магазин