Действительно ли необходимо для абстрактного класса иметь по крайней мере один абстрактный метод?
В теме этого сообщения и в теле задаются два разных вопроса:
Ответ на #2 - однозначно нет.
Ответ на №1 субъективен и является вопросом стиля. Лично я бы ответил "да". Если вы хотите предотвратить инстанцирование класса (не имеющего абстрактных методов), лучше всего использовать private
protected
конструктор, а не пометить его abstract
.
Если вы сделали все правильно, откройте браузер и введите следующее:
http://localhost
, чтобы проверить, успешно ли он открывается, и затем вы можете открыть свои сайты.
Также ознакомьтесь с документацией по настройке и запуску сценариев php.
-121--3430718- Лучшее, что я могу предложить, это поместить их - как верхний уровень, так и нисходящие интерфейсы, в отдельную сборку, с интерфейсами базового уровня, объявленными как внутренние
, и интерфейсами, которые расширяют эти интерфейсы как открытые
.
Если класс имеет абстрактный
модификатор в объявлении, он становится абстрактным
классом.
Ты убиваешь себя.
Для 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
, где каждый метод уже имеет определенное поведение по умолчанию, и вы можете переопределить только один (или более) из них вместо всех .
В JDK 1.0 действительно было необходимо иметь хотя бы один абстрактный метод в абстрактном классе. Это ограничение было снято в JDK 1.1 (1997? (Я старый)), и в библиотеку Java были добавлены такие классы, как java.awt.event.KeyAdapter
.
В C ++ вам нужна по крайней мере одна чистая виртуальная функция, чтобы создать подкласс, и по крайней мере одна виртуальная функция для добавления RTTI к классу. Обычно имеет смысл использовать деструктор.
Обратите внимание, что при переопределении не абстрактных методов использование @Override
является хорошей идеей. Он не только сообщает читателю важную информацию о том, что пытается сделать код, но также выявляет распространенные ошибки, когда опечатки или неправильные типы параметров препятствуют переопределению.
Нет - вы можете объявить абстрактный класс без использования каких-либо абстрактных методов. Концептуально существование экземпляра этого класса может не иметь никакого смысла, или вы можете убедиться, что только подклассы этого класса могут быть созданы (по любой причине)