|
Модераторы: LSD, AntonSaburov Страницы: (80) « Первая ... 75 76 [77] 78 79 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
|
Dummy |
|
|||
Опытный Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 9 Всего: 19 |
Действительно, добро. А почему именно так, а не иначе? Думаю, спустя 2 с лишним месяца можно обнародовать объяснение Почему компилятор при совпадении имени внутреннего класса и статической переменной выбирает именно последнюю? |
|||
|
||||
Kangaroo |
|
|||
AA - Aussie Animal Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
А все просто - так сказано в спецификации Джавы Это просто надо знать. А лучше - использовать Джава Code Conventions и не волноваться. -------------------- Lost.... |
|||
|
||||
ivg |
|
|||
Autonomous R&D Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
К чему это я? К тому, что в байт коде Java, команды создания объекта класса и собственно вызов конструктора никак не связаны, а точнее легко отделить одно от другого. Компилятор конечно такие вещи не позволяет делать. Однако если сделать класс Singleton сериализуемым, то легко создаётся новый объект через сериализацию-десериализацию. И при этом конструктор Singleton'а не вызывается. Вот мне стало интересно как же так, попробовал решить задачку, не меняя определение класса. Покопался в исходниках, результат выше. При этом вызывается конструктор базового класса, в данном случае класса Object. Это как бы противоречит идее конструирования объектов, но речь идёт о десериализации, поля объекта заполняются значениями, состояние восстановлено, вроде как можно обойтись без вызова конструктора Singleton. |
|||
|
||||
Се ля ви |
|
|||
Java/SOAрхитектор Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
Задачка на понимание абстрактных классов.
Известно, что при наследовании мы должны вызывать конструктор суперкласса из конструктора нашего класса, передавая ему все нужные параметры. Таким образом, получается, что каждый объект класса-потомка как бы инкапсулирует в себе экземпляр класса-предка, который инкапсулирует экземпляр своего предка и т.д. по всей иерархии наследования до самого Object`а. Т.е., создавая просто один экземпляр объекта, мы на самом деле создаём пирамидку объектов всех его предков. После создания этого экземпляра класса-предка, он становится доступен по ссылке-ключевому слову super. Теперь - к абстрактным классам. При наследовании от них мы тоже должны вызывать конструктор, соответственно, создавать их экземпляр. Соответственно, по ссылке super становится доступно то, чего сделать невозможно по всем канонам ООП - экземпляр абстрактного класса!!! После этого мы в каком-нибудь из методов можем написать
Собственно, вопрос - без проверки скажите, что будет, если вызвать у него метод, объявленный абстрактным? -------------------- |
|||
|
||||
Kangaroo |
|
|||
AA - Aussie Animal Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Мне кажется, что выполнится метод класса с "return super;". Но это так, наугад Добавлено @ 00:04 Ща проверим Не ожидал такого подвоха. Слепая вера заслепила разум Это сообщение отредактировал(а) Kangaroo - 28.3.2009, 00:19 -------------------- Lost.... |
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Мне кажется, что вызовется переопределённый метод в классе-потомке.
Хотя... надо проверить. Добавлено @ 12:25 "Как обманчива природа, подумал ёжик, слезая с кактуса" Это сообщение отредактировал(а) AlexeyVorotnikov - 30.3.2009, 11:32 -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
chaos |
|
|||
Серийный программист Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
вызовется метод наследника не соберется пример Это сообщение отредактировал(а) chaos - 30.3.2009, 09:47 |
|||
|
||||
Kangaroo |
|
|||
AA - Aussie Animal Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Хе-хе, никто не ожидал такого подвоха -------------------- Lost.... |
|||
|
||||
chaos |
|
|||
Серийный программист Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
Се ля ви, Kangaroo объясните в чом подвох?
зачем писать return super не пойму. при проверки компилятор ругается. Это сообщение отредактировал(а) chaos - 31.3.2009, 07:20 |
|||
|
||||
Се ля ви |
|
|||
Java/SOAрхитектор Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
chaos, короче, super - это не совсем ссылка. Есть ограничения на использование этого ключевого слова как раз, что бы такого не было. Оно служит:
-------------------- |
|||
|
||||
chaos |
|
|||
Серийный программист Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
Се ля ви, ну я так и понял. что только для вызова конструктора и методов базового класса
|
|||
|
||||
Thor_75t |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 23.9.2007 Репутация: нет Всего: нет |
Насчёт задачи Се ля ви- Я поддерживаю Kangaroo и тоже считаю что выполнится метод того класса, в котором вызывается метод абстрактного класса, или словами AlexeyVorotnikov -"вызовется переопределённый метод в классе-потомке". Переопределяя абстрактный метод при наследовании мы тем самым ставим его в очередь диспетчеризации, из которой выбирается наиболее подходящий метод. Я попытался написать код под эту ситуацию, если ошибаюсь, просьба- ткнуть меня в правильный код Учил учил книгу, потом попал на ваш форум, порешал задачки примерно с 2004 года, получалось может меньше 50% да и то с горем 1\2 И тогда на меня снизошло- что я пока стою на 1м этаже безграничного "java" небоскрёба ещё подниматься и подниматься Зато здорово что есть такой форум
Это сообщение отредактировал(а) Thor_75t - 2.10.2009, 01:49 |
||||||
|
|||||||
fedrbodr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.2.2010 Репутация: нет Всего: нет |
Всем привет!
Сегодня столкнулся с одно интересностью и родилась задача)) Что будет в результате?
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Честно говоря я не в восторге от подобной особенности DateFormat-а.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Самозванка |
|
|||
Девушка в стиле IT Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: 1 Всего: 40 |
Есть связаный однонаправленный список... Каким образом распечатать его задом наперед.... Привести несколько вариантов...
|
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |