русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Статические элементы


Дата добавления: 2015-06-12; просмотров: 482; Нарушение авторских прав


До этого момента под полями объекта мы всегда понимали значения, которые имеют смысл только в контексте некоторого экземпляра класса. Например:

class Human {private String name; }

Прежде, чем обратиться к полю name, необходимо получить ссылку наэкземпляр класса Human, невозможно узнать имя вообще, оно всегда принадлежит какому-то конкретному человеку.

Но бывают данные и иного характера. Предположим, необходимо хранить количество всех людей (экземпляров класса Human, существую­щих всистеме). Понятно, что общее число людей не является характеристикой какого-то одного человека, оно относится ко всему типу в целом, отсюда появляется название "поле класса", в отличие от "поля объекта".Объявляются такие поля с помощью модификатора static:

class Human {public static int totalCount; }

Чтобы обратиться к такому полю, ссылка на объект не требуется, вполне достаточно имени класса:

Humans.totalCount++; // рождение еще одного человека

Для удобства разрешено обращаться к статическим полям и через ссылки:

Human h = new Human(); h.totalCount=100;

Однако такое обращение конвертируется компилятором. Он исполь­зует тип ссылки, в данном случае переменная h объявлена как Human, по­этому последняя строка будет неявно преобразована в:

Human.totalCount=100;

В этом можно убедиться на следующем примере:

Human h = null; h.totalCount+=10;

Значение ссылки равно null, но это не имеет значения в силу описан­ной конвертации. Данный код успешно скомпилируется и корректно ис­полнится. Таким образом, в следующем примере

Human h1 = new Human(), h2 = new Human();

Human.totalCount=5;

h1.totalCount++;

System.out.println(h2.totalCount);

все обращения к переменной totalCount приводят к одному единственно­му полю, и результатом работы такой программы будет 6. Это поле будет существовать в единственном экземпляре независимо от того, сколько объектов было порождено от данного класса и был ли вообще создан хоть один объект.



Аналогично объявляются статические методы.

class Human {private static int totalCount;

public static int getTotalCount() {return totalCount; } }

Для вызова статического метода ссылки на объект не требуется.

Human.getTotalCountO;

Хотя для удобства обращения через ссылку разрешены, но принима­ется во внимание только тип ссылки:

Human h=null;



<== предыдущая лекция | следующая лекция ==>
Заключение | Human.getTotalCountO; // одному и тому же методу


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.594 сек.