Просмотр полной версии : При наследовании убрать public метод родитля
Deimos747
23.04.2012, 15:38
Реально ли при наследовании убрать public методы родителя?
Я такой информации не находил, и сомневаюсь, что это возможно. Но если вдруг есть такой способ, то пожалуйста, поделитесь.
anmelegov
23.04.2012, 15:45
вам надо пересмотреть архитектуру своей программы
А зачем их убирать? Можно переопределить или не использовать. Наследование на то и наследование, чтобы чайлд получал все от родителя.
Aquahawk
23.04.2012, 15:48
так нельзя делать идеологически. Методы которые рассчитывают на получение предка могут получать потомка и всё должно работать, поэтому все методы предка должны быть доступны.
В качестве костыля можете пометить в наследнике этот метод как deprecated и вам компилятор будет кидать варнинг. В режиме варнинг == ошибка вы не сможете скомпилировать такой код. Думаю будет работать.
Также переопределив можете там кинуть IllegalOperationError, чтобы в рантайме оно падало при попытке обратиться к этому методу. Комбинация этих двух методов должна работать, хотя конечно тот ещё костыль.
А может вам вместо наследования сделать композицию и руками пробросить вызовы нужных методов?
incvizitor
23.04.2012, 17:43
В качестве костыля можете пометить в наследнике этот метод как deprecated
Есть еще метатег Exclude.
Метатег только прячет от автокомплита.
Dukobpa3
23.04.2012, 20:00
Есть еще метатег Exclude.
и метатег private
Добавлено через 33 секунды
Вообще имхо бред, всё верно сказали. Если есть такая потребность значит проблема в архитектуре.
Zebestov
23.04.2012, 20:32
override public function somePublicMethod():void
{
throw new Error("Нема никого!");
}
Вообще имхо бред, всё верно сказали. Если есть такая потребность значит проблема в архитектуре.
Даже на солнце есть пятна. А уж чтобы архитектура без проблем - такого вообще не бывает.
В С++, вон, можно "приватно" наследовать реализацию без интерфейса и открывать методы по выбору (хотя, пишут, что обычно таки композицию вместо этого используют)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.