> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/vidimost-peremennykh.md).

# Видимость переменных

Видимость переменных в Java определяется их областью действия, которая зависит от контекста, в котором они объявлены, и их модификатора доступа.&#x20;

1. **Область действия переменных**:
   * Область действия переменной - это часть программы, в пределах которой переменная может быть использована.
   * Переменные имеют локальную, экземплярную или статическую область действия.
2. **Локальные переменные**:

   * Локальные переменные объявляются внутри блока кода, например, метода, цикла или условия.
   * Они видны только внутри этого блока кода и недоступны за его пределами.

   Пример локальной переменной:

   ```java
   public void myMethod() {
       int x = 10; // Локальная переменная x
       System.out.println(x); // Видима только внутри метода myMethod
   }
   ```
3. **Экземплярные переменные**:

   * Экземплярные переменные объявляются внутри класса, но вне любых методов.
   * Они принадлежат конкретному экземпляру класса (объекту) и доступны из любого метода этого класса.

   Пример экземплярной переменной:

   ```java
   public class MyClass {
       int x; // Экземплярная переменная x
   }
   ```
4. **Статические переменные**:

   * Статические переменные объявляются с модификатором `static` и принадлежат классу, а не объекту.
   * Они доступны из любого метода этого класса и общие для всех экземпляров этого класса.

   Пример статической переменной:

   ```java
   public class MyClass {
       static int x; // Статическая переменная x
   }
   ```
5. **Модификаторы доступа**:

   * Кроме области действия, видимость переменных также определяется их модификаторами доступа, такими как `public`, `private`, `protected` и `default`.
   * Модификаторы доступа определяют, где переменная может быть доступна.

   Примеры с модификаторами доступа:

   ```java
   public int publicVar; // Доступна из любого класса
   private int privateVar; // Доступна только внутри текущего класса
   protected int protectedVar; // Доступна внутри текущего класса и подклассов
   int defaultVar; // Доступна только внутри текущего пакета
   ```
