|
|
|
статические поля в 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, 00:49:47 |
|
||
|
статические поля в java
|
|||
|---|---|---|---|
|
#18+
покажи класс В. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 01:04:05 |
|
||
|
статические поля в java
|
|||
|---|---|---|---|
|
#18+
miklouha, Такое может быть, если у тебя класс В выглядит вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Т.е. ты в конструкторе базового класса вызываешь полиморфный метод (в твоем случае superA() ). Такое странное поведение объясняется немного необычным порядком инициализации. Далее процитирую Брюса Эккеля из Thinking in Java: Код: java 1. 2. 3. 4. Но лучше сам прочитай первоисточник Поведение полиморфных методов при вызове из конструкторов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2013, 06:34:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38226846&tid=2129537]: |
0ms |
get settings: |
19ms |
get forum list: |
28ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
78ms |
get topic data: |
21ms |
get forum data: |
5ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 353ms |
| total: | 592ms |

| 0 / 0 |
