| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > подклассы и одинаковые методы |
| Автор: ressac 18.1.2009, 21:54 | ||||||||
получаю я вот это 0 f() : clase base ! g() : clase base ! 0 f() : clase derivada 1 ! g() : clase derivada 1 ! 0 f() : clase derivada 2 ! g() : clase derivada 2 ! так вот я не пойму почему атрибут всегда показан правильно, тойсть атрибут отца. а методы вызываются подклассов. я ведь не делаю кастинг ((Derivada1)p).f(); или ((Derivada2)p).f(); пожалуйста расталкуйте наглядно, спасибо! |
| Автор: rygel 18.1.2009, 22:01 |
| поля объекта в полиморфизме не участвуют |
| Автор: ressac 18.1.2009, 22:56 |
| rygel, но если я добавлю только метод "Н" например в один из под классов , то это метод я ни как не смогу вызвать из базового класса. |
| Автор: rygel 18.1.2009, 23:25 |
| да, не сможешь, если необходимо использовать методы подкласса то и используй работая с объектом подкласса ссылку типа подкласса |
| Автор: ressac 18.1.2009, 23:43 |
| rygel, тогда почему в первом случае это прокатывает? я имею в виду методы g и f |
| Автор: rygel 18.1.2009, 23:47 |
| дык только что ведь этот вопрос обсуждался http://forum.vingrad.ru/forum/topic-238762.html |
| Автор: ressac 19.1.2009, 01:17 |
| rygel, да причём тут динамический биндинг? эх, опять 23 %) |
| Автор: Hroft 21.1.2009, 18:45 |
| ressac, удивительно, если честно. Тебе все четко пишут, а ты не желаешь читать. Все методы в java виртуальные. Поля виртуальными не бывают. Ты обращаешься к полю базового класса. С какой стати там должно выводиться что-то еще, кроме значения поля в экземпляре базового класса? И как тут может быть ни при чем "динамический биндинг", если пример как раз на это? |
| Автор: ressac 27.1.2009, 04:19 |
| я просто новичок, а вы сразу накинулись. |
| Автор: math64 27.1.2009, 09:40 | ||||
Вывод:
|