Это все делать с переменной сферы - «объем», что означает, где переменная доступна.
В вашем коде i
является «локальной переменной», которая имеет область действия только в пределах метода, который объявлен (и фактически только после это объявлено). Вот почему другой метод не может «видеть» его.
Параметры методов также рассматриваются как локальные переменные.
Следующий уровень вверх - это экземпляр переменная, область видимости которой - все методы, но только в контексте экземпляра - каждый экземпляр получает свою собственную копию.
После этого у вас есть static переменные, объем которых есть каждый экземпляр - всего один экземпляр для каждого класса, в котором он определен.
Чтобы «исправить» ваш код, вы можете:
- передать переменную в качестве параметра метода
eg()
- создать
static
переменную, которая будет объявлена вне метода (ов)
- потому что ваши методы статичны, переменная экземпляра не помогла бы, но работала бы, если бы вы создали методы методов методов (нестатические) и создали экземпляр вашего класса
Зачем ожидать, что это сработает? –
Переменная i недоступна для метода eg(), поскольку она не входит в область видимости. Вы должны прочитать немного больше о переменных, методах и их объеме. – Alex
Если у вас есть бутылка виски в вашем автомобиле, вы можете выпить ее в своей комнате? Нет. Если у вас нет «getter», который приносит его вам из автомобиля: D – Maroun