Статичні методи і поля java, блог про шифрування

Поля даних, оголошені в класі як static. є загальними для всіх об'єктів класу і називаються змінними класу. Якщо один об'єкт змінить значення такого поля, то це зміна побачать всі об'єкти. Для роботи зі статичними атрибутами використовуються статичні методи, оголошені з специфікатором static. Такі методи є методами класу, не прив'язані ні до якого об'єкту і не містять покажчика this на конкретний об'єкт, що викликав метод. Статичні методи реалізують парадигму «раннього пов'язуючи-ня», жорстко визначає версію методу на етапі компіляції. Через недоступність покажчика this статичні поля і методи не можуть звертатися до нестатичних полів і методів безпосередньо, так як для звернення до статичних полів і методів досить імені класу, в якому вони визначені.

// приклад # 4. статичні метод і поле: Mark.java

publicclass Mark

privateint mark = 3;

publicdouble getResult ()

return (double) coeff * mark / 100;

publicstaticvoid setCoeffFloat (float c)

publicvoid setMark (int mark)

this .mark = mark;

// з статичного методу можна звернутися до нестатичних полів і методів

/ * Public static int getResult ()

При створенні двох об'єктів

Mark ob1 = new Mark ();

Mark ob2 = new Mark ();

Значення ob1.coeff і ob2.coeff і дорівнює 5. оскільки розташовується в одній і тій же області пам'яті. Змінити значення статичного члена можна прямо через ім'я класу:

Виклик статичного методу також слід здійснювати за допомогою вказівки:
ClassName.methodName (). а саме:

floatz = Math.max (x, y); // визначення максимуму з двох значень

System.exit (1); // екстрене завершення роботи програми

Статичний метод можна викликати також з використанням імені об'єкта, але такий виклик знижує якість коду і не буде логічно коректним, хоча і не призведе до помилки компіляції.

Перевизначення статичних методів класу не має практичного сенсу, так як звернення до статичного атрибуту або методу здійснюється здебільшого за допомогою завдання імені класу, якому вони належать.