Переменная экземпляра класса в Java

Что такое переменная экземпляра класса Java и с чем ее едят? Переменные, которые имеют глобальный охват и локальный, в чем различие? Обо все этом в нашем новом уроке на примере кода из предыдущей статьи.

В предыдущем разделе мы говорили о переменных внутри методов. Переменные, которые вы устанавливаете внутри методов, доступны только этим методам. Они не доступны для других методов. То есть, они имеют локальный охват.

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

Добавьте следующие четыре строки в ваш новый класс Sales из предыдущего урока:

package firm;

public class Sales {
    
    String Worker;
    String Position;
    String Num_Sales;
    String Salary;
    
}

Мы устанавливаем четыре переменные String (четыре строковых экземпляра). Как следует из названий экземпляров нашего класса Sales, строки будут содержать имя работника, его должность, количество продаж и его зарплату.

Эти четыре экземпляра класса будут доступны для всех методов, которые мы напишем в этом классе, и они не будут локальными для какого-либо одного метода. То есть, они имеют глобальный охват.

Чтобы увидеть, насколько они глобальны, вернитесь в класс Branch, класс с методом main. Добавьте следующую строку кода, чтобы создать новый объект класса Sales:

package firm;

public class Branch {

    public static void main(String[] args) {
        
        Sales aWorker = new Sales();
        
    }
    
}

Это то же самое, что мы делали в предыдущем разделе - использовали ключевое слово new для создания нового объекта. Имя объекта будет aWorker, и оно имеет тип от Sales, который является нашим классом.

В следующей строке введите имя переменной (aWorker), а затем точку. После NetBeans отобразит всплывающий список методов и свойств, доступных вашему объекту:

Подсказки NetBeans Экземпляры класса

Четыре экземпляра, которые мы настроили, находятся в списке. Это не методы, а то, что называется свойством. Тот факт, что они вообще есть в списке, означает, что они имеют глобальный охват. Если бы у них был локальный охват, их бы не было в списке.

Вы можете установить значения для свойств. Попробуйте это: добавьте следующий выделенный код в ваш метод main (выделено синим цветом):

package firm;

public class Branch {

    public static void main(String[] args) {
        
        Sales aWorker = new Sales();
        
        aWorker.Position = "Менеджер";

        String position = aWorker.Position;
        System.out.println(position);
    }
    
}

Мы выбрали экземпляр класса Position из списка и присвоили ему значение «Менеджер». Затем в следующей строке мы получаем значение Position из объекта aWorker. Результат сохраняется в переменной с именем position, а затем распечатывается. Когда вы запустите программу, выведется строка «Менеджер».

Итак, четыре переменные, которые мы установили, теперь доступны для обоих классов.

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

Чтобы сделать переменную экземпляра доступной только для определенного класса, вы добавляете ключевое слово в Java private непосредственно перед объявлением экземпляра. Измените код в классе Sales на это:

package firm;

public class Sales {
    
    private String Worker;
    private String Position;
    private String Num_Sales;
    private String Salary;
    
}

Теперь только код в классе Sales может видеть эти переменные экземпляра класса. Чтобы проверить, вернитесь к методу main, и вы увидите следующие предупреждения и красные подчеркивания:

Ошибки кода Экземпляры класса

Удалите три строки снизу. Введите aWorker, а затем снова точку, чтобы увидеть всплывающий список NetBeans:

Подсказки NetBeans

Как видите, четыре переменные экземпляра нашего класса исчезли. Они исчезли, потому что у них больше нет глобальной области видимости, и, следовательно, их нельзя увидеть из класса Branch. (Красное подчеркивание говорит лишь о том, что строка еще не дописана и Java-программа расценивает это как ошибку.)

В следующем уроке вы узнаете о том, что называется конструктором класса.

Дата обновления: 23.08.2019

  • Текущий 0.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

/Рейтинг: 0.0/5 (0 голос(ов) всего)

Добавить комментарий (без регистрации)