Индивидуальные свойства базового класса

Рейтинг: 1Ответов: 1Опубликовано: 06.12.2014

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

P.S. Как final для методов.

UPD

private не подойдёт - массив должен быть доступным, смысл - в экономии, может, на "копейках", но всё же... У базового класса массив данных, а подклассы используются часто и таскают за собой ненужный груз.

Единственное, что приходит на ум, переопределить свойство в каждом подклассе на пустое, но хотелось бы красиво. ))

UPD2

Пока сделал так:

//базовый класс
class BClass{
    public $cur_array = array('данные');
    ...
}
//решение проблемы
class CLEAR extends BClass{
    public $cur_array = array();
}
//теперь подклассы наследую уже от CLEAR 
class SUBClass extends CLEAR{
    ....    
}

Ответы

▲ 2Принят

Может, тогда static private $param? Массив создан будет, но будет в одном экземпляре, поэтому на это можно будет внимания не обращать.

А может, лучше пересмотреть схему наследования? Если вы используете функциональность, которая вам нафиг не нужна в дочерних классах, то зачем вы наследуетесь от этого класса?

Может быть, стоит выделить класс, который действительно является базовым, а от него унаследовать ваш "текущий базовый" и все его потомки. Тогда в измененном "текущем базовом" можно будет хоть что делать.

Обновление

static - это временное решение, следующим шагом должно быть создание класса BClassAdditional, который наследуется от BClass. Везде, где вам нужен ваш массив - вы используете именно этот класс. Ну и потихоньку переносить функционал, связанный с cur_array в этот новый класс (если, конечно, cur_array должен только в нем использоваться).