В java мой proffesor сказал нам, что вы не можете использовать нестатические члены класса внутри статического метода. Он также сказал, что вы не можете использовать ключевое слово «this» в статическом методе. Почему это?Нестатические элементы внутри статического метода
ответ
Нестатические члены класса и this
связаны с экземпляром класса, тогда как статический метод не связан ни с каким экземпляром, но с самим классом.
Поскольку как нестатические элементы, так и ключевое слово this
ссылаются на экземпляр объекта. Статический метод принадлежит классу, а не экземпляру, поэтому эти две вещи ничего не означают в указанном контексте.
Вы не можете использовать нестатические переменные в статическом методе, потому что статический метод может быть выполнен без создания (создания объекта на основе ..) класса. Поскольку нестатические переменные могут меняться с помощью методов объекта, нестатические переменные являются специфичными для объекта. Поскольку вы можете несколько раз использовать класс для создания нескольких объектов, с помощью которых вы можете использовать методы для изменения нестатических переменных, принадлежащих объектам, для этой нестатической переменной будет несколько значений. Если статический метод смог получить доступ к нестатической переменной, он не знал бы, какое значение использовать. Отсюда почему он не может его использовать.
Что касается this
, то this
относится к нестатической переменной, принадлежащей объекту. Поскольку вы не можете получить доступ к нестационарным переменным из статических методов, вы не должны вызывать this
в статическом методе.
Иногда пример помогает. Рассмотрим этот класс:
class Foo {
int bar; // non-static member
Foo(int bar) {
this.bar = bar;
}
static int getBar() {
return bar; // invalid - what if we have many Foos with different bars?
}
}
Теперь представьте attemping использовать этот класс:
public static void main(String[] args) {
Foo foo1 = new Foo(1); // bar is 1 in this instance
Foo foo2 = new Foo(2); // bar is 2 in this instance
int bar = Foo.getBar(); // which instance of Foo would we get bar from?
}
Non статические члены класса и this
ключевого слова связаны с объектами класса и статического метода, связанного с классом.
Вещь objects
знает все о классе, поэтому объект может получить доступ ко всем классам статических методов.
И class
имеют no
информацию о своем objects
, поэтому статический метод не может получить доступ к объектам.
- 1. HttpContext.Current.Response внутри статического метода
- 2. Переменные не будут увеличиваться, вызывая нестатические методы из статического метода
- 3. Нестатические вещи из статического, C#?
- 4. доступа нестатические члены статического класса
- 5. Имея трудное время для статического метода, который использует нестатические методы
- 6. Могут ли статические члены использовать нестатические элементы и наоборот?
- 7. Переменный обмен внутри статического метода
- 8. String.Remove equivilant внутри статического метода
- 9. вызов статического метода внутри класса?
- 10. Вызова grailsApplication внутри статического метода
- 11. Вызов нестатического метода внутри статического веб-метода
- 12. Получить имя нестатического метода внутри статического метода
- 13. Доступ не являющихся статические элементы внутри статического метода с помощью передается указатель
- 14. Ссылка на нестатические переменные из статического контекста
- 15. Как обновить элементы управления из статического метода?
- 16. переопределение статического метода, определенный внутри статического вложенного класса
- 17. Просмотреть состояние, не работающее внутри статического метода
- 18. Структуры внутри статического метода - безопасность Код
- 19. Использование объектов Winform внутри статического метода
- 20. Как использовать «runOnUiThread (runnable)» внутри статического метода?
- 21. вызова статического метода из внутри класса
- 22. Как использовать отражение внутри статического метода
- 23. не может вызвать Response.Redirect внутри статического метода
- 24. Чтение файлов cookie внутри статического метода
- 25. Как написать cookie внутри статического метода
- 26. AsyncTask внутри статического метода - хорошая практика кодирования?
- 27. Как найти значение управления внутри статического метода
- 28. Дисплей Тост внутри статического метода в Android
- 29. Неожиданное назначение переменных внутри метода статического класса
- 30. Как использовать обычную переменную внутри статического метода
Вам нужно узнать, что такое статические методы. – SLaks
http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html http://introcs.cs.princeton.edu/java/21function/ – SLaks