![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 4EJIOBEK |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 26.3.2007 Репутация: нет Всего: 4 |
Нет имелось ввиду, что использовать protected поля напрямую нежелательно(если объявление класса и использование его protected поля находятся в пределах одного пакета). И совсем запрещено(разных пакетах) для того, чтоб не было возможности у классов имеющих одного предка(но находящихся в разных пакетах) менять состяние друг друга.
нет, если, конечно, это поле не объявлено статическим |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. Есть static и не static переменные. static переменная принадлежит классу и одна на все экземпляры класса, и даже если нет ни одного экземпляра класса, static переменная все равно есть. Не static переменная принадлежит конкретному объекту и не существует без этого объекта и у каждого объекта своя переменная. К static переменным обращаются через имя класса: ИмяКласса.имяПеременной, к не static обращаются через ссылку на конкретный объект ссылка.имяПеременной. В этом коде:
обращения к str и i компилятор неявно заменяет на A.str и this.i. Дело в том, что любой не static метод имеет ссылку this, а static - нет. И поэтому обратится к не static переменной из static метода, без явного указания ссылки, нельзя. Аналогичная ситуация и с методами и классами. 2. Есть модификаторы доступа которые определяют какой код может, а какой нет обращаться к данной переменной/методу/классу. Модификаторы бывают private, <defailt>, protected, public (в порядке убывания строгости). Модификаторы доступа не зависят от того это static переменная/метод/класс или нет. Чтобы можно было обратится к переменной надо чтобы были выполнены оба пункта. В твоем первом примере пункт 1 выполнен, т.к. при обращении ты указал ссылку на объект ( ob1 ), а вот пункт 2 нет. Почему нет, я подробно расписал в своем первом посте. -------------------- 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. |
|||
|
||||
![]()
|
| Правила форума "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. |