Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   При наследовании убрать public метод родитля (http://www.flasher.ru/forum/showthread.php?t=178517)

Deimos747 23.04.2012 15:38

При наследовании убрать public метод родитля
 
Реально ли при наследовании убрать 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

Код AS3:

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


expl 24.04.2012 02:20

Цитата:

Сообщение от Dukobpa3 (Сообщение 1076628)
Вообще имхо бред, всё верно сказали. Если есть такая потребность значит проблема в архитектуре.

Даже на солнце есть пятна. А уж чтобы архитектура без проблем - такого вообще не бывает.

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


Часовой пояс GMT +4, время: 01:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.