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

Из абстрактного класса невозможно создать объект. Для чего же нужен такой класс, из которого невозможно получить объект? Потому что класс на самом деле может быть слишком ... абстрактным. Например, представим, что у нас есть класс Car, который содержит общие методы для всех видов транспорта. Но ведь вы не хотите, что кто-либо в действительности создавал обобщенный, абстрактный объект Car. Как Вы собираетесь управлять его состоянием? Какого цвета он должен быть? Сколько мест он должен иметь? Лошадиных сил? Полноприводный ли он ? Другими словами, как должны быть реализованы методы?
В реальности, необходимо создавать объекты реальных типов машин, таких как BMWBoxster или SubaruOutback. Рассмотрим следующий абстрактный класс:
Этот код скомпилируется. Однако, при попытке создать объект класса Car, Вы получите ошибку компилятора наподобии:
![]() |
Заметьте, что методы, помеченные как abstract, оканчиваются точкой с запятой, а не фигурными скобками. |
Материалы, которые могут вас заинтересовать
- Java. Вложенные классы в методах
- Java. Создание объекта вложенного класса извне внешнего класса
- Java. Создание объекта вложенного класса изнутри внешнего класса
- Java. Создание объекта вложенного класса
- Java. Создание "регулярного" вложенного класса
- Java. Вложенные классы (Inner Classes)
- Java. Создание обобщенных методов
- Java. Обобщенные типы (Generic Declarations)
- Java. Использование карт (Using Maps)








Не понимаю для кого пишутся эти статьи. Для профи? Так им это и так известно. Для навичков? Так им это не понятно. Почти отсутствует описание. Вот более подробное:
Абстрактным методом (описатель abstract) в Java называется метод, для которого заданы параметры и тип возвращаемого значения, но не тело. Абстрактный метод определяется в классах-наследниках. В C++ то же самое называется чисто виртуальной функцией. Для того чтобы в классе можно было описывать абстрактные методы, сам класс тоже должен быть описан как абстрактный. Объекты абстрактного класса создавать нельзя, потому что на не известен размер памяти, который необходимо выделить пол объект такого класса. Интерфейсы Высшей степенью абстрактности в Java является интерфейс (interface). Все методы интерфейса абстрактны: описатель abstract даже не требуется. Интерфейс не является классом. Класс может наследовать, или расширять (extends) другой класс или реализовывать (implements) интерфейс. Кроме того, интерфейс может наследовать, или расширять другой интерфейс.
В Java класс не может наследовать более одного класса, зато может реализовывать сколько угодно интерфейсов.
Интерфейсы можно передавать методам как параметры, но нельзя создавать объекты их типов.
http://www.tadviser.ru/index.php/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F:Java
Отправить комментарий