Читайте также:
|
|
Методы и поля, описанные в объявлении класса, становятся доступными только при создании объекта этого класса. В то же время может быть необходимо в классе иметь доступными поля и методы, независимо от того, сколько объектов создано, или созданы ли объекты этого класса вообще. Либо требуется описать метод, не ассоциируемый с объектом определенного класса (аналог глобального метода). Достигается это использованием ключевого слова static по отношению к полям и методам. Это означает, они не привязаны к определенному экземпляру объекта класса. И статический метод может быть вызван, либо обеспечен доступ к статическому полю, даже если нет объектов данного класса. Статические методы, не требующие создания объекта до их использования, не могут получить прямой доступ к не статическим полям или методам простым обращением к ним без указания имени объекта, так как они не получают ссылки this.
Поле или метод класса является статическим, если при его определении перед ним указывается ключевое слово static:
class StaticDemo {
static int n1 = 1;
int n2;
static void metod1() { StaticDemo.n1++; }
void metod2() { n2++; }
}
В этом случае даже при создании нескольких объектов StaticDemo, все они будут иметь общее поле StaticDemo.n1.
StaticDemo obj1 = new StaticDemo();
StaticDemo obj2 = new StaticDemo();
При этом obj1.n1, и obj2.n1 имеют одно и то же значение 1, так как они ссылаются на одну и ту же область памяти.
Ссылаться на статические компоненты класса можно как через объект, так и прямо через имя класса(например, StaticDemo.n1), что невозможно с не статическими членами.
Добавление атрибута static к полю класса изменяет путь его создания (одни для всего класса против не статического: один для каждого объекта). Атрибут static примененный к методу класса позволит вызывать этот метод без создания объекта.
Считается, что static методы не являются объектно-ориентированными, так как они имеют семантику глобальных функций; с помощью static метода не посылается сообщение объекту. Если в программе используется достаточно много статических методов, вероятно, нужно изменить свою стратегию.
Спецификатор final
Спецификатор final (аналогично const в С++) используется для предотвращения изменения значения переменной с которой она объявлена.Например:
final int GOD = 2008;
final char SIMVOL = 'a';
объявленные т.о. переменные не могут быть изменены. Идентификаторы соответствующие им принято набирать заглавными буквами.
Дата добавления: 2015-09-11; просмотров: 28 | Поможем написать вашу работу | Нарушение авторских прав |