0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 2
|
||||||
1 | ||||||
Ошибка: non-static variable this cannot be referenced from a static context16.06.2014, 23:29. Показов 24728. Ответов 4
Метки нет Все метки)
(
Добрый вечер!
Не пинайте сильно ногами, недавно решил взяться за обучение языку Java, что в мои годы уже подвиг сам по себе. Зубрю потихоньку, столкнулся с такой проблемой, как ошибка: "Error: (18, 24) java: non-static variable this cannot be referenced from a static context". Вот код программы, он простой:
Если "public class Man" объявить как "public static class Man" - то ошибка пропадает, и программа нормально работает. Но почему так? Ведь конструкция "new" как раз и служит для обращения к нестатичным методам? Если можно, поподробнее расскажите, пожалуйста. Учусь сам по сайтам, учебникам, а там всё как-то мельком и бегло разъясняют. ![]()
0
|
|
16.06.2014, 23:29 | |
Ответы с готовыми решениями:
4
О чем говорит ошибка "Non-static variable D cannot be referenced from a static context" Non-static variable this cannot be referenced from a static context Non-static variable a cannot be referenced from a static context Ошибка “non-static method cannot be referenced from a static context” |
Форумчанин
5955 / 4190 / 405
Регистрация: 28.12.2013
Сообщений: 24,134
|
|
16.06.2014, 23:34 | 2 |
потому что вложенный класс не статичный.
0
|
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 2
|
|
16.06.2014, 23:45 [ТС] | 3 |
Так я ведь поэтому использую конструкцию "new ...", создавая объект "man1" класса "Man", чтобы через этот объект обратиться к нестатичному классу. Вроде как в учебнике всё.
![]()
0
|
Форумчанин
5955 / 4190 / 405
Регистрация: 28.12.2013
Сообщений: 24,134
|
|
16.06.2014, 23:53 | 4 |
поскольку класс вложенный то и законы физики тут другие
![]() а если делать подобное в 2 класса с private переменными,нужно создавать методы управления этими переменными.Это уже ближе к теме инкапсуляции ![]() Ну или делать переменные статичными и обращаться через ссылку на класс,но так теряется инкапсуляция.
2
|
6 / 6 / 3
Регистрация: 09.03.2014
Сообщений: 23
|
|
17.06.2014, 00:06 | 5 |
![]() Решение
Для того что бы корректно создавался объект внутреннего класса нужно использовать конструкцию .new. Например есть класс A в него вложен класс B. так вот B b = new A().new B(); как то так )) Или статический использовать тогда ничего не нужно !)
4
|
17.06.2014, 00:06 | |
Помогаю со студенческими работами здесь
5
Non-Static method cannot be referenced from a static context non-static variable cannot be referenced from a static context Ошибка "Non-static field 'Label' cannot be referenced from a static context"
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |