Как управлять областью переменной в Java

Область действия относится к области доступности переменной. Он определяет, где можно использовать объявленную переменную. Попытка использовать переменную вне ее области действия приведет к ошибке времени компиляции.

Как правило, вы всегда должны использовать принцип наименьших привилегий при определении области действия переменной. Согласно этому принципу, переменная должна иметь ровно столько видимости, сколько необходимо для выполнения своей работы, и не более того.

Правила области применения

Есть четыре основных правила, которые определяют объем деклараций.

Правило 1

Когда вы объявляете параметр, его область действия находится в теле функции.

 String withdraw (int amount){
// this is the scope of the parameter "amount" ie from the left brace ,{, to the the right one, }
}

Правило 2

Область действия переменной, объявленной в функции, – от той части, в которой она объявлена, до конца тела функции. Этот тип переменной, объявленной в теле функции, называется локальной переменной. Следовательно, эта переменная имеет локальную область видимости.

 String withdraw (int amount){
String currency;
int transaction_fee = 2; // this is a local variable and it's scope begins from here till the right brace, }
}

Связанный: Что такое объектно-ориентированное программирование? Основы, объясненные в терминах непрофессионала

Правило 3

Переменная, объявленная в заголовке оператора for, также имеет локальную область видимости.

 for ( int y=11;y <20; y++){
// variable y has local scope
}

На этом этапе важно упомянуть, что вы получите ошибку времени компиляции, если ваш метод имеет две локальные переменные с одинаковым именем.

Правило 4

Область действия метода или поля класса – это все тело класса. Это позволяет методам экземпляра класса использовать методы или поля класса.

Посмотрите на пример ниже. Это полностью рабочий код, реализующий приведенные выше правила. Вы можете скомпилировать и запустить его на своем ПК.

 class Account {
int y = 2; // class field
static void withdraw(int amount){
String z;
for(int y=1; y<=3; y++){ // line 7
System.out.println("
Remember to hide your PIN.");}
}
public static void main(String args[]){
withdraw(50); }
}

Обратите внимание на поле класса и код в строке 7. Если вы объявляете параметр или локальную переменную с именем, аналогичным имени, используемому в одном из полей класса, выполнение будет продолжаться нормально и без ошибок. Это известно как слежка.

В приведенном выше примере переменная y объявляется дважды, но компилятор не отмечает никаких ошибок. Компилятор сначала «скрывает» поля класса до тех пор, пока блок не будет выполнен.

Связанный: 4 модификатора доступа, объясненные на Java

Иногда может потребоваться доступ к затененному полю в блоке. Это можно сделать двумя способами:

а) Вы можете использовать ключевое слово this, если имеете дело с переменной экземпляра. См. Пример ниже:

this.x : x – переменная экземпляра

б) Если переменная, к которой вы пытаетесь получить доступ, является переменной статического класса, используйте приведенный ниже синтаксис для доступа к ней:

 ClassName.x // x is a static variable

Область действия класса

Обычно каждый объект имеет свои собственные переменные экземпляра. Есть сценарии, когда вам нужна одна и та же копия переменной, доступная для всех экземпляров. В этом случае вам нужно сделать их статичными.

Члены класса, определенные с помощью ключевого слова static, имеют область действия класса. Следовательно, статические переменные имеют область действия класса. К ним можно получить доступ всеми методами класса. Чтобы получить доступ к общедоступным статическим переменным класса, используйте:

 ClassName.variable_name

С другой стороны, к закрытым статическим переменным класса можно получить доступ только с помощью методов класса.

Получите классы и конструкторы в своей области

Иногда вам может потребоваться переменная, которая при доступе после инициализации не изменяется. В случае необходимости используйте ключевое слово final . Просто поместите его перед переменной, которую вы объявляете, чтобы использовать ее.

 final double PI = 3.14159;

Попытка изменить переменную, объявленную как final, приведет к ошибке времени компиляции. Также важно знать, что вы должны немедленно инициализировать конечную переменную. Вы не можете инициализировать его позже.

На этом этапе вы должны изучить конструкторы и классы для изучения Java.