![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| nornad |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Или я совсем старый стал и ничего не смыслю в модификаторах доступа, или в указанной ждк баг.
Вот пример:
Вопрос: как это может работать? Добавлено через 8 минут и 47 секунд М-да... прошу прощения, я действительно ничего не понимаю в модификаторах доступа. Нашёл тут в довольно старенькой книжке (точнее, в заметках, сделанных по книжке), что
Имхо, несколько странное поведение для защищённых полей и методов, но "описанный баг - уже не баг, а фича". P.S. Просьба к модераторам: не удаляйте тему. Думаю, найдутся и другие "ничего не смыслящие". -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||||
|
|||||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: нет Всего: 20 |
хм... очень интересно, не знал таких подробностей, поэтому порылся на java.sun.com и вот что нашел
modifiers -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 2 Всего: 10 |
Давайте не будем томить народ, там речено:
Лично мне такое не нравится - Delphi вспоминается... Это сообщение отредактировал(а) Ulysses4j - 26.6.2007, 06:06 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Собственно это как бы прописная истина ;) И еще: если сабж без модификатора, то ведет он себя именно так, как ты хочешь, чтобы вел себя protected ;) |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 2 Всего: 10 |
+1 Добавлено через 4 минуты и 52 секунды
Хотите сказать, что package-private и protected это одно и то же? Сомневаюсь. Если подкласс данного класса находится в другом пакете, то protected-члены базового ему будут видны, а package-private базового - нет. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Не скажи. Судя по информации на офсайте поле без модификатора ведёт себя не так, как protected в том же с++. Смотрим в табличку и видим, что такое поле видно в пределах пакета, но не будет видимым классу-потомку, который лежит в другом пакете. "Стандартный" же protected наоборот подразумевает видимость потомкам, а не пакету. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Вся эта котовасия происходит от желания _четко_ разделить иерархию доступа, то есть, чтобы одна полностью включала другой.
public protected package private И вследствие этого к пакетам следует относиться внимательнее, помня, что это не только средство модульной декомпозиции, но и средство инкапсуляции. Это сообщение отредактировал(а) fixxer - 26.6.2007, 09:24 -------------------- ![]() |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В Java он ведет себя именно так как описано выше, с самой первой версии. О причинах fixxer уже написал. -------------------- 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. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
М-да... что-то я всё же заглючил. protected ведёт себя почти так, как я и понимал. Так же как и no modifier.
Единственный момент, которого я не знал - это, что protected виден и всем внутри пакета. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| progdog |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
В книжке "Секреты программирования для Internet для Java" еще по jre 1.0 было написано, что тогда во всяком случае был еще один модификатор. Цитата с книжки:
Его убрали скорее всего потому что разработчикам захотелось, чтобы было по одному модификатору доступа. А про protected там написано:
Кстати именно этот модификатор присваивается если ничего не указывать. А до того как я прочитал эту книжку я искренне думал, что в остальных книжках написана правда. Это сообщение отредактировал(а) progdog - 30.6.2007, 11:59 |
||||
|
|||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
Если не ошибаюсь, то, если ничего не указывать присваивается "доступ по умолчанию" или пакетный доступ. Т.е. наследник из другого пакета не будет видеть. -------------------- <удалено администрацией форума> |
|||
|
||||
| EvgenZ |
|
||||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
Это сообщение отредактировал(а) EvgenZ - 30.6.2007, 09:32 -------------------- <удалено администрацией форума> |
||||
|
|||||
| progdog |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Я не знаю с чего вы взяли что при protected оно заработает, но во всяком случае в Eclipse оно выдаст ошибку. Даже если компилятор это и откомпилирует, я Eclipse выкидывать на помойку не собираюсь.
Я вот так тестил:
Это сообщение отредактировал(а) progdog - 30.6.2007, 13:44 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Там ошибка в том, что нет импорта для Parent-а. А в остальном код полностью корректный. -------------------- 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. |
|||
|
||||
| progdog |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Ну да, точно
Но это все равно сути дела не меняет. |
|||
|
||||
![]()
|
| Правила форума "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. |