PDA

Просмотр полной версии : При наследовании убрать public метод родитля


Deimos747
23.04.2012, 15:38
Реально ли при наследовании убрать public методы родителя?
Я такой информации не находил, и сомневаюсь, что это возможно. Но если вдруг есть такой способ, то пожалуйста, поделитесь.

anmelegov
23.04.2012, 15:45
вам надо пересмотреть архитектуру своей программы

DaFive
23.04.2012, 15:46
А зачем их убирать? Можно переопределить или не использовать. Наследование на то и наследование, чтобы чайлд получал все от родителя.

Aquahawk
23.04.2012, 15:48
так нельзя делать идеологически. Методы которые рассчитывают на получение предка могут получать потомка и всё должно работать, поэтому все методы предка должны быть доступны.
В качестве костыля можете пометить в наследнике этот метод как deprecated и вам компилятор будет кидать варнинг. В режиме варнинг == ошибка вы не сможете скомпилировать такой код. Думаю будет работать.
Также переопределив можете там кинуть IllegalOperationError, чтобы в рантайме оно падало при попытке обратиться к этому методу. Комбинация этих двух методов должна работать, хотя конечно тот ещё костыль.

А может вам вместо наследования сделать композицию и руками пробросить вызовы нужных методов?

in4core
23.04.2012, 17:03
оверрейдить и все тут

incvizitor
23.04.2012, 17:43
В качестве костыля можете пометить в наследнике этот метод как deprecated

Есть еще метатег Exclude.

wvxvw
23.04.2012, 19:50
Метатег только прячет от автокомплита.

Dukobpa3
23.04.2012, 20:00
Есть еще метатег Exclude.
и метатег private

Добавлено через 33 секунды
Вообще имхо бред, всё верно сказали. Если есть такая потребность значит проблема в архитектуре.

Zebestov
23.04.2012, 20:32
override public function somePublicMethod():void
{
throw new Error("Нема никого!");
}

expl
24.04.2012, 02:20
Вообще имхо бред, всё верно сказали. Если есть такая потребность значит проблема в архитектуре.
Даже на солнце есть пятна. А уж чтобы архитектура без проблем - такого вообще не бывает.

В С++, вон, можно "приватно" наследовать реализацию без интерфейса и открывать методы по выбору (хотя, пишут, что обычно таки композицию вместо этого используют)