|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
не хочу поднимать ахинею снова, но this.methodA() из шестого поста как раз может быть вызван переопределенным, поэтому правильный ответ в постах 3, 15 ну и, естесственно, 16
|
|
|||||
Lorem ipsum
|
0о т.е. в базовом классе A вызов this.methodA() вызовет не A::methodA()? куда катится мир...
P.S. может я просто не уловил сути. тут часом не обсуждается навязчивая идея использовать super в базовом классе, расширяющим Object (т.е. ничего), и чтобы все работало? если так — то я мимо... и это просто забава такая для тренировки ума... как эспандер =) никакой полезной работы для Отечества.
__________________
Поймай яблоко 2! Последний раз редактировалось Zebestov; 11.05.2010 в 00:23. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Часом не обсуждается. Я думал что непереопределенный метод можно было вызвать по-простому - super.methodA(). Однако этот метод ищется действительно в супере, т.е в Object. Вариант только однин (без закидонов) - написать приватный метод, реализующий "родной" methodA. А на счет this.methodA() - если в классе СassB я его переопределю, то в СlassA, который нуждается в "родном" methodA(), вызовется уже переопределенный. Т.е будет B::methodA().
Если совсем непонятно про что речь и к чему это все. То в двух словах: Есть базовый класс, в котором есть , и она всегда для базового класса должна отдавть естественно 4. Но вот в один день мне вдруг взгрустнулось, и я решил расширить сласс, да так, чтобы для нужд нового расширенного класса, эта самая функция могла бы возвращать, скажем -4. Если базовый класс будет вызывать this._2x2(), то, естественно, он будет давать результаты, мягко скажем не те, какие ожидаются. Так вот чтобы его логика не нарушалась, и нужно в базовом классе как то вызывать "родную" _2x2(). А как это сделать уже выяснили. |
|
|||||
Lorem ipsum
|
приехали... наследуемый класс переопределяя метод оказывается переопределяет его и в суперклассе... пошел смотреть сериал...
__________________
Поймай яблоко 2! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Zebestov, вот если не веришь или лень проверять...
Представляю вашему обозрению пост номер 7. Особое внимание прошу уделить трэйсу: Цитата:
Последний раз редактировалось i.o.; 11.05.2010 в 02:29. |
|
|||||
Lorem ipsum
|
я очень прошу. можно еще раз, другими словами, популярно пояснить — чего мы хотим? Пост #7 с демонстрацией того, как все запущено, мне в упор не понятен.
ну надо тебе иметь базовый класс, ну опиши его: public class ClassA { public function ClassA():void { } public function methodA():String { return "ClassA::methodA()"; } } public class ClassB extends ClassA { public function ClassB() { super(); } override public function methodA():String { return "ClassB::methodA()"; } } var _a:ClassA = new ClassA(); var _b:ClassB = new ClassB(); trace(_a.methodA()); // думаешь, что выведет "ClassB::methodA()", // потому что мы его переопределили в наследнике о том что: var _b:ClassB = new ClassB(); trace(_b.methodA()); // таки выведет "ClassB::methodA()", // потому что мы его переопределили в наследнике или ты хочешь но не в ClassA же это делать. не его головная боль, что ты там навыдумывал в наследнике.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Zebestov, не утруждайте себя, вопрос был в другом. Если бы вы хотели понять, о чем идет тут речь, то задумались бы, почему тема началась всего лишь с одного класса. Я не собираюсь тут каждому на пальцах разъяснять, что хотел. Тем более что ответ давным давно получен.
Индивидуально для Zebestov попробую в последний раз объяснить все же: У меня есть базовый класс А, так вот в нем все должно работать всегда одинаково и исправно, несмотря на то, что некоторые его методы, можно переопределить. Т.е он должен уметь вызывать свои родные методы. Наследники тут не при чем, это просто для примера было. Из наследников нет необходимости вызывать супер методы. В трэйсе для примера были вызовы, чтобы показать, что именно вызывается в базовом классе. Все ли сейчас понятно? Сама задача проще некуда, просто решил узнать есть ли способ обойтись без создания дополнительных приватных функций, вот и все. Хотелось вызывать непереопределенный метод так же, как и в наследниках - super.methodA(), но так не получается. Последний раз редактировалось i.o.; 11.05.2010 в 13:13. |
|
|||||
Lorem ipsum
|
Цитата:
что-то подозреваю, но еще хочу уточнить. под "некоторые его методы можно переопределить" ты имеешь в виду непосредственно через месячишко взять этот же класс и переписать его метод(ы) с какими-то сколь-нибудь существенными изменениями? и чтобы при этом по прежнему можно было пользовать еще и старые версии?
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
|
Часовой пояс GMT +4, время: 19:25. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|