
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.04.2013, 00:49:47
|
|||
|---|---|---|---|
|
|||
статические поля в java |
|||
|
#18+
всем доброй ночи, у меня такой вопрос...есть класс A Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. который наследуется от B. У класса А одно поле a, два конструктора, один собственный метод methodA и один унаследованный от класса B метод superA. Я создаю объект класса А вызывая конструктор А: A newA = new A("123") и инициализируя поле a значением "123". Но в этом случае System.out.println(a) в унаследованном методе methodA вернет null. Чтобы вернуло значение "123" поле a в классе A должно быть объявлено как static. Почему так происходит не могу понять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.04.2013, 01:04:05
|
|||
|---|---|---|---|
статические поля в java |
|||
|
#18+
покажи класс В. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.04.2013, 06:34:46
|
|||
|---|---|---|---|
статические поля в java |
|||
|
#18+
miklouha, Такое может быть, если у тебя класс В выглядит вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Т.е. ты в конструкторе базового класса вызываешь полиморфный метод (в твоем случае superA() ). Такое странное поведение объясняется немного необычным порядком инициализации. Далее процитирую Брюса Эккеля из Thinking in Java: Код: java 1. 2. 3. 4. Но лучше сам прочитай первоисточник Поведение полиморфных методов при вызове из конструкторов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2129537]: |
0ms |
get settings: |
15ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 431ms |
| total: | 603ms |

| 0 / 0 |
