НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування Java. W3Schools українською. Уроки для початківців

En

Java Модифікатори


Модифікатори

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

public class Main

Ключове слово public є модифікатором доступу, що означає, що воно використовується для встановлення рівня доступу для класів, атрибутів, методів і конструкторів.

Ми поділяємо модифікатори на дві групи:

  • Модифікатори доступу – керує рівнем доступу
  • Модифікатори без доступу - не контролюють рівень доступу, але надають інші функції

Модифікатори доступу

Для класів ви можете використовувати public або default:

Модифікатор Опис Спробуй це
public Клас доступний будь-якому іншому класу Спробуй це »
default Клас доступний лише для класів у тому самому пакеті. Це використовується, коли ви не вказуєте модифікатор. Ви дізнаєтеся більше про пакети в розділі Пакети Спробуй це »

Для атрибутів, методів і конструкторів можна використовувати один із наведених нижче:

Модифікатор Опис Спробуй це
public Код доступний для всіх класів Спробуй це »
private Код доступний лише в межах оголошеного класу Спробуй це »
default Код доступний лише в одному пакеті. Це використовується, коли ви не вказуєте модифікатор. Ви дізнаєтеся більше про пакети в розділі Пакети Спробуй це »
protected Код доступний у тому самому пакеті та підкласах. Ви дізнаєтеся більше про підкласи та суперкласи в розділі Наслідування Спробуй це »

Модифікатори без доступу

Для класів ви можете використовувати його final або abstract:

Модифікатор Опис Спробуй це
final Клас не може бути успадкований іншими класами (ви дізнаєтеся більше про успадкування в розділі Наслідування) Спробуй це »
abstract Клас не можна використовувати для створення об’єктів (щоб отримати доступ до абстрактного класу, його потрібно успадкувати від іншого класу. Ви дізнаєтеся більше про наслідування та абстракцію в розділах Наслідування та Абстракція) Спробуй це »

Для атрибутів і методів можна використовувати один із наведених нижче:

Модифікатор Опис
final Атрибути та методи не можна перевизначати/змінювати
static Атрибути та методи належать класу, а не об’єкту
abstract Його можна використовувати лише в абстрактному класі та лише в методах. Метод не має тіла, наприклад, abstract void run();. Тіло надається підкласом (успадковується від). Ви дізнаєтеся більше про успадкування та абстракцію в розділах Наслідування та Абстракція
transient Атрибути та методи пропускаються під час серіалізації об’єкта, що їх містить
synchronized Доступ до методів може мати лише один потік одночасно
volatile Значення атрибута не кешується локально потоком, а завжди зчитується з "основної пам’яті"

Фінал

Якщо ви не хочете мати можливість перевизначати існуючі значення атрибутів, оголосите атрибути як final:

Приклад

public class Main {
  final int x = 10;
  final double PI = 3.14;

  public static void main(String[] args) {
    Main myObj = new Main();
    myObj.x = 50; // спричинить помилку: неможливо призначити значення фінальної змінної
    myObj.PI = 25; // спричинить помилку: неможливо призначити значення фінальної змінної
    System.out.println(myObj.x);
  }
}
Спробуйте самі »

Статичний

static метод означає, що до нього можна отримати доступ без створення об’єкта класу, на відміну від public:

Приклад

Приклад для демонстрації відмінностей між методами static і public:

public class Main {
  // Статичний метод
  static void myStaticMethod() {
    System.out.println("Статичні методи можна викликати без створення об’єктів");
  }

  // Публічний метод
  public void myPublicMethod() {
    System.out.println("Публічні методи необхідно викликати під час створення об’єктів");
  }

  // Main метод
  public static void main(String[ ] args) {
    myStaticMethod(); // Викликати статичний метод
    // myPublicMethod(); Це виведе помилку

    Main myObj = new Main(); // Створіть об’єкт Main
    myObj.myPublicMethod(); // Викликати публічний метод
  }
}
Спробуйте самі »

Абстрактний

Метод abstract належить до класу abstract і не має тіла. Тіло надається підкласом:

Приклад

// Код з імені файлу: Main.java
// abstract клас
abstract class Main {   public String fname = "John";   public int age = 24;   public abstract void study(); // abstract метод } // Підклас (успадкувати від Main) class Student extends Main {   public int graduationYear = 2018;   public void study() { // тут представлено тіло абстрактного методу     System.out.println("Навчання цілий день");   } } // Кінцевий код з імені файлу: Main.java // Код з імені файлу: Second.java class Second {   public static void main(String[] args) {     // створити об’єкт класу Student (який успадковує атрибути та методи від Main)     Student myObj = new Student();     System.out.println("Name: " + myObj.fname);     System.out.println("Age: " + myObj.age);     System.out.println("Graduation Year: " + myObj.graduationYear);     myObj.study(); // виклик абстрактного методу
  } }
Спробуйте самі »