2010-12-09 1 views
1

У меня есть три класса, которые в основном делают очень похожие вещи;Расширение класса с общей функциональностью

  1. Сохраните запись загруженного файла.
  2. Переместить и загрузить файл.
  3. Установите статус записи в активную или отмененную.

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

Как довольно много функций, я считаю, что лучше всего расширить базовый класс, чем дублировать многие функции.

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

Я подумал об использовании абстрактного класса, поскольку это позволит мне расширить функциональность, сохранив при этом большинство вещей в одном месте. Но это проблема с конструкцией. Могу ли я иметь абстрактный класс без конструкции?

Любые идеи?

ответ

0

Если я вас понимаю: у вас может быть любой класс без __construct(). И вы всегда можете переписать каждый метод (кроме методов, объявленных как final) родительского класса в дочернем классе.

+0

Хорошая практика иметь абстрактный класс без констриктора и иметь дочерние классы? – 2010-12-09 20:11:59

0

Извините, но я думаю, что я не совсем понимаю ваш вопрос. В любом случае в унаследованном классе вы всегда можете переопределить конструктор и внутри него вызывать конструктор суперкласса плюс дополнительные материалы, если это необходимо.