Оценить:
 Рейтинг: 3.5

Java за неделю. Вводный курс

Год написания книги
2018
<< 1 ... 18 19 20 21 22 23 24 25 >>
На страницу:
22 из 25
Настройки чтения
Размер шрифта
Высота строк
Поля

}

public class Listing6_6 {

public static void main (String [] args) {

// прямое обращение к статическим методам

// без создания объекта класса

MyClass.showText ();

MyClass.showNumber ();

// прямое обращение к статическим полям

// без создания объекта класса

MyClass.number=15;

MyClass. text=«Java»;

// проверяем, изменились ли статические поля

// после прямого обращения

MyClass.showText ();

MyClass.showNumber ();

// создаем объект класса

MyClass obj=new MyClass ();

// обращаемся к статическим полям

// в качестве полей объекта

obj.showText ();

obj.showNumber ();

}

}

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

В главном классе мы обращаемся напрямую к статическим методам класса. Для этого указываем имя класса и через точку – имя статического метода, принадлежащего классу. Затем аналогичным способом обращаемся напрямую к статическим полям и присваиваем им новые значения. Чтобы убедиться, что значения полей изменились, вновь обращаемся к статическим методам вывода на печать.

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

6.2.5 Закрытые члены класса

Очевидно, что статические поля являются общими для любых объектов класса. Вы можете создать сколько угодно объектов класса, и все они будут обращаться к одним тем же статическим полям и методам класса. Если в процессе выполнения программы изменить значение статического поля, то изменение затронет все объекты и фрагменты кода, использующие это поле. С одной стороны, это может быть удобно, если вы используете статическое поле в качестве глобальной переменной. Но в остальных случаях ошибочное изменение содержимого статического поля может быть очень опасным и приводит к трудно локализуемым ошибкам. Не зря в редакторе среды NetBeans IDE каждое внешнее обращение к статическому полю помечается предупреждением (желтый треугольник с восклицательным знаком).

Чтобы гарантированно предотвратить ошибочную модификацию значения статического поля, его объявляют закрытым при помощи ключевого слова private. Закрытые члены класса доступны только в теле класса, и к ним нет прямого доступа извне.

Как обратиться к закрытому полю? Для этого необходимо описать в классе открытый статический метод и вызвать его как обычно, через точку после имени класса. Пример класса с закрытым статическим полем и открытым статическим методом приведен в листинге 6.7.

Листинг 6.7 Пример класса с закрытым статическим полем

class MyClass {

// закрытое статическое текстовое поле

private static String text=«Hello»;

// открытый статический метод

// для изменения закрытого поля

static void setText (String txt) {

text=txt;

}

static void showText () {

System.out.println (text);

}

}

public class Listing6_7 {

public static void main (String [] args) {

// Выводим значение поля на печать

MyClass.showText ();

// Модифицируем значение поля

MyClass.setText («New text»);

// Выводим новое значение на печать
<< 1 ... 18 19 20 21 22 23 24 25 >>
На страницу:
22 из 25