Абстрактный класс должен иметь по крайней мере один абстрактный метод?

Действительно ли необходимо для абстрактного класса иметь по крайней мере один абстрактный метод?

19
задан Michael Myers 17 February 2010 в 18:38
поделиться

5 ответов

В теме этого сообщения и в теле задаются два разных вопроса:

  1. Должен ли он иметь хотя бы один абстрактный член?
  2. Необходимо ли иметь хотя бы один абстрактный член?

Ответ на #2 - однозначно нет.

Ответ на №1 субъективен и является вопросом стиля. Лично я бы ответил "да". Если вы хотите предотвратить инстанцирование класса (не имеющего абстрактных методов), лучше всего использовать privateprotected конструктор, а не пометить его abstract.

15
ответ дан 30 November 2019 в 03:02
поделиться

Если вы сделали все правильно, откройте браузер и введите следующее:

http://localhost

, чтобы проверить, успешно ли он открывается, и затем вы можете открыть свои сайты.

Также ознакомьтесь с документацией по настройке и запуску сценариев php.

-121--3430718-

Лучшее, что я могу предложить, это поместить их - как верхний уровень, так и нисходящие интерфейсы, в отдельную сборку, с интерфейсами базового уровня, объявленными как внутренние , и интерфейсами, которые расширяют эти интерфейсы как открытые .

-121--2394872-

Если класс имеет абстрактный модификатор в объявлении, он становится абстрактным классом.

-1
ответ дан 30 November 2019 в 03:02
поделиться

Ты убиваешь себя.

Для Win32 библиотек DLL операционных систем 0.997 доступны в i386-msvcrt-ruby-odbc.zip. Он содержит файлы odbc.so и odbc_utf8.so которые необходимо скопировать в .../ruby/1.8/i386-msvcrt каталог Установки Ruby 1.8 на базе MSVC.

Попробуйте поместить эти файлы туда, где это рекомендуется, затем установить эту версию драгоценного камня и посмотреть, как она проходит.

-121--4903789-

Нет - можно объявить абстрактный класс, не имея абстрактных методов. Концептуально для экземпляра этого класса это может не иметь смысла, или вы можете убедиться, что только подклассы этого класса могут быть созданы (по какой-либо причине)

-121--2190420-

Нет, это не обязательно. Это часто происходит в «шаблонном методе» , например, в StartServlet , где каждый метод уже имеет определенное поведение по умолчанию, и вы можете переопределить только один (или более) из них вместо всех .

14
ответ дан 30 November 2019 в 03:02
поделиться

В JDK 1.0 действительно было необходимо иметь хотя бы один абстрактный метод в абстрактном классе. Это ограничение было снято в JDK 1.1 (1997? (Я старый)), и в библиотеку Java были добавлены такие классы, как java.awt.event.KeyAdapter .

В C ++ вам нужна по крайней мере одна чистая виртуальная функция, чтобы создать подкласс, и по крайней мере одна виртуальная функция для добавления RTTI к классу. Обычно имеет смысл использовать деструктор.

Обратите внимание, что при переопределении не абстрактных методов использование @Override является хорошей идеей. Он не только сообщает читателю важную информацию о том, что пытается сделать код, но также выявляет распространенные ошибки, когда опечатки или неправильные типы параметров препятствуют переопределению.

10
ответ дан 30 November 2019 в 03:02
поделиться

Нет - вы можете объявить абстрактный класс без использования каких-либо абстрактных методов. Концептуально существование экземпляра этого класса может не иметь никакого смысла, или вы можете убедиться, что только подклассы этого класса могут быть созданы (по любой причине)

6
ответ дан 30 November 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: