Проблема с расширением класса - PullRequest
1 голос
/ 29 октября 2010

У меня проблема с расширением класса, который сам расширяет абстрактный класс.

Базовый абстрактный класс имеет следующие методы:

Abstract:

private final __construct()
abstract protected function loadFromId()
private static final load($id)

Расширение класса 1 Аннотация:

protected loadFromId()

Расширение класса 2 Класс 1:

//nothing as of yet

Причина, по которой я расширяю класс 1 из класса 2, заключается в том, что он мне нужен для возвратаэкземпляр класса 1. Класс 2 в основном вернет пустой объект для целей проверки.

Если я попытаюсь расширить класс 1:

Class 2 extends Class 1 { }

Я получу следующую ошибку "Cannot override final method class::__construct()"очевидно, потому что это закрытый метод.

Есть ли способ создать нулевой объект на основе класса 1?

1 Ответ

3 голосов
/ 29 октября 2010

Ошибка, которую вы получаете, вызвана тем, что вы объявили свою функцию construct () в суперклассе Abstract как final, то есть вы не можете переопределить ее. Удалите его, и проблем не должно быть.

О sidenote: безопаснее использовать защищенный при использовании наследования. Если вы абсолютно не уверены, что вам не понадобится поле / функция в ваших дочерних классах.

...