access modifiers java tutorial with examples
Цей відео-посібник пояснює, що таке модифікатори доступу в Java та як використовувати типові, загальнодоступні, захищені та приватні модифікатори доступу за допомогою прикладів:
У Java ми маємо класи та об'єкти. Ці класи та об'єкти містяться в пакеті. Крім того, класи можуть мати вкладені класи, методи, змінні тощо. Оскільки Java є об'єктно-орієнтованою мовою програмування, ми повинні слідувати інкапсуляції, в якій ми приховуємо небажані деталі.
Java надає сутності, що називаються «Модифікатори доступу або специфікатори доступу», які допомагають нам обмежити обсяг або видимість пакета, класу, конструктора, методів, змінних чи інших членів даних. Ці модифікатори доступу також називаються “Специфікатори видимості”.
За допомогою специфікаторів доступу до певного методу класу або змінної можна обмежити доступ або приховати від інших класів.
=> Перевірте ВСІ підручники Java тут.
найкраще видалення шкідливого програмного забезпечення для Windows 7
Що ви дізнаєтесь:
- Відео-посібник з модифікаторів доступу в Java
- Доступ до модифікаторів на Java
- Типи модифікаторів доступу в Java
- Висновок
Відео-посібник з модифікаторів доступу в Java
Доступ до модифікаторів на Java
Специфікатори доступу також визначають, до яких членів даних (методів чи полів) класу можуть отримати доступ інші члени даних класів чи пакетів тощо. Щоб забезпечити інкапсуляцію та повторне використання, ці специфікатори / модифікатори доступу є невід'ємною частиною об'єктно-орієнтованого програмування.
Модифікатори в Java бувають двох типів:
# 1) Модифікатори доступу
Модифікатори доступу в Java дозволяють нам встановити обсяг, доступність або видимість члена даних, будь то поле, конструктор, клас або метод.
# 2) Модифікатори, що не мають доступу
Java також надає специфікатори не-доступу, які використовуються з класами, змінними, методами, конструкторами тощо. Специфікатори / модифікатори доступу не визначають поведінку сутностей у JVM.
Деякі з специфікаторів / модифікаторів, що не мають доступу до Java, є:
- статичний
- остаточний
- реферат
- перехідний
- мінливий
- синхронізовані
- рідний
Ми розглядали статичні, синхронізовані та мінливі ключові слова в наших попередніх навчальних посібниках. Ми розглянемо інші модифікатори, що не мають доступу, у наших майбутніх підручниках, оскільки вони виходять за рамки цього посібника.
Типи модифікаторів доступу в Java
Java пропонує чотири типи специфікаторів доступу, які ми можемо використовувати з класами та іншими сутностями.
Це:
# 1) За замовчуванням: Якщо конкретний рівень доступу не вказаний, вважається, що він є „типовим”. Обсяг рівня за замовчуванням знаходиться в межах пакету.
# 2) Публічний: Це найпоширеніший рівень доступу, і кожного разу, коли специфікатор загальнодоступного доступу використовується із суттю, ця конкретна сутність доступна зсередини або поза класом, всередині або поза пакетом тощо.
# 3) Захищений: Рівень захищеного доступу має область дії, яка знаходиться в пакеті. Захищений об’єкт також доступний поза пакетом через успадкований клас або дочірній клас.
# 4) Приватне: Коли сутність є приватною, тоді ця сутність не може бути доступна поза класом. До приватної особи можна отримати доступ лише з класу.
Ми можемо резюмувати модифікатори доступу в наступній таблиці.
Специфікатор доступу | Всередині класу | Всередині упаковки | Зовнішній підклас упаковки | Зовнішня упаковка |
---|---|---|---|---|
Приватна | Так | Не | Не | Не |
За замовчуванням | Так | Так | Не | Не |
Захищений | Так | Так | Так | Не |
Громадський | Так | Так | Так | Так |
Далі ми детально обговоримо кожен із цих специфікаторів доступу.
Специфікатори доступу за замовчуванням
Модифікатор доступу за замовчуванням у Java не має конкретного ключового слова. Всякий раз, коли модифікатор доступу не вказаний, вважається, що це за замовчуванням. Сутності, такі як класи, методи та змінні, можуть мати доступ за замовчуванням.
Клас за замовчуванням доступний всередині пакету, але він не доступний ззовні пакета, тобто всі класи всередині пакету, в якому визначено клас за замовчуванням, можуть отримати доступ до цього класу.
Подібним чином метод або змінна за замовчуванням також доступні всередині пакету, в якому вони визначені, а не поза пакетом.
Наведена нижче програма демонструє модифікатор доступу за замовчуванням у Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Вихід:
У наведеній вище програмі у нас є клас і метод всередині нього без будь-якого модифікатора доступу. Отже, як клас, так і метод відображення мають доступ за замовчуванням. Тоді ми бачимо, що в методі ми можемо безпосередньо створити об’єкт класу і викликати метод.
Модифікатор громадського доступу
Клас або метод або поле даних, зазначене як «загальнодоступне», доступне з будь-якого класу або пакета в програмі Java. Публічна організація доступна як в пакеті, так і поза пакетом. Загалом, модифікатор загального доступу - це модифікатор, який взагалі не обмежує сутність.
найкращі засоби очищення реєстру для Windows 10 -
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Вихід:
Захищений специфікатор доступу
Специфікатор захищеного доступу надає доступ до сутностей через підкласи класу, в якому оголошено сутність. Не має значення, чи знаходиться клас в одному пакеті чи в іншому пакеті, але поки клас, який намагається отримати доступ до захищеного об’єкта, є підкласом цього класу, сутність є доступною.
Зверніть увагу, що клас та інтерфейс не можуть бути захищені, тобто ми не можемо застосовувати захищені модифікатори до класів та інтерфейсів.
Модифікатор захищеного доступу зазвичай використовується у відносинах між батьками та дітьми.
Наведена нижче програма демонструє використання модифікатора захищеного доступу в Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Вихід:
Модифікатор приватного доступу
Модифікатор „приватний” доступ - це той, який має найнижчий рівень доступності. Методи та поля, які оголошені як приватні, недоступні поза класом. Вони доступні лише в класі, до складу якої входять ці приватні організації.
Зверніть увагу, що приватні сутності навіть не видно для підкласів класу. Модифікатор приватного доступу забезпечує інкапсуляцію в Java.
Деякі моменти, на які слід звернути увагу щодо модифікатора приватного доступу.
- Модифікатор приватного доступу не можна використовувати для класів та інтерфейсів.
- Сфера застосування приватних сутностей (методів та змінних) обмежена класом, в якому вони оголошені.
- Клас із приватним конструктором не може створити об'єкт класу з будь-якого іншого місця, як основний метод. (Детальніше про приватні конструктори було пояснено в нашому попередньому навчальному посібнику).
Наведена нижче програма Java використовує модифікатор приватного доступу.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Вихід:
Програма вище видає помилку компіляції, оскільки ми намагаємось отримати доступ до приватних даних за допомогою об’єкта класу.
Але є метод доступу до змінних приватних членів. Цей метод використовує геттери та сетери в Java. Отже, ми пропонуємо метод public get в тому ж класі, в якому оголошено приватну змінну, щоб getter міг прочитати значення приватної змінної.
Подібним чином ми пропонуємо відкритий метод встановлення, який дозволяє нам встановити значення для приватної змінної.
Наступна програма Java демонструє використання методів getter та setter для приватних змінних у Java.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Вихід:
Вища програма має клас із приватною змінною рядка. Ми пропонуємо загальнодоступний метод-член getName, який повертає значення приватної змінної. Ми також надаємо загальнодоступний метод setName у класі, який приймає String як аргумент і призначає його приватній змінній.
Оскільки обидва методи є загальнодоступними, ми можемо легко отримати до них доступ, використовуючи об’єкт класу. Таким чином ми можемо подолати помилку компіляції, яка виникає кожного разу, коли ми намагаємось отримати доступ до приватних даних членів класу.
Часті запитання
Q # 1) Скільки модифікаторів доступу є в Java?
Відповідь: Java надає чотири модифікатори, тобто стандартний, загальнодоступний, захищений та приватний.
Запитання №2) Що таке модифікатори доступу та модифікатори доступу, що не є в Java?
Відповідь: Модифікатори доступу визначають видимість або область застосування сутності програми, наприклад, класу, методу, змінної чи конструктора. Модифікатори, що не мають доступу, визначають поведінку сутності. Наприклад, синхронізований метод або блок вказує на те, що він може працювати в багатопотоковому середовищі, кінцева змінна вказує, що це константа.
Q # 3) Чому специфікатори доступу важливі?
Відповідь: Модифікатори вказують, який клас може отримати доступ до яких інших класів, методів чи змінних. Використовуючи специфікатори доступу, ми можемо обмежити доступ різних класів, методів, конструкторів та змінних, а також забезпечити інкапсуляцію та багаторазове використання сутностей Java.
яка фаза аналізу в sdlc
Q # 4) Які модифікатори не використовуються для класу?
Відповідь: Модифікатори Protected та Private не використовуються для класу.
Q # 5) Що таке модифікатори, що не мають доступу?
Відповідь: Модифікатори, що визначають поведінку сутностей, таких як клас, метод або змінні, з якими вони пов'язані, є модифікаторами, що не мають доступу. Як випливає з назви, вони не вказують доступ. Java пропонує різні модифікатори, що не мають доступу, такі як статичний, остаточний, синхронізований, нестабільний, абстрактний тощо.
Детальніше про модифікатори видимості
Java надає безліч модифікаторів для доступу до змінної, методів та конструкторів.
У Java є 4 типи змінних доступу:
- Приватна
- Громадський
- За замовчуванням
- Захищений
# 1) Приватна
Якщо змінна оголошена як приватна, тоді до неї можна отримати доступ у класі. Ця змінна не буде доступна поза класом. Отже, сторонні учасники не можуть отримати доступ до приватних членів.
Примітка: Класи та інтерфейси не можуть бути приватними.
# 2) Громадський
До методів / змінних із загальнодоступними модифікаторами можуть отримати доступ усі інші класи проекту.
# 3) Захищений
Якщо змінну оголошено захищеною, тоді до неї можна отримати доступ у тих самих класах пакунків та підкласах будь-яких інших пакунків.
Примітка: Модифікатор захищеного доступу не можна використовувати для класу та інтерфейсів.
# 4) Модифікатор доступу за замовчуванням
Якщо змінну / метод визначено без будь-якого ключового слова модифікатора доступу, тоді це матиме доступ за замовчуванням до модифікатора.
Модифікатори доступу | Видимість |
---|---|
Громадський | Доступно для всіх класів. |
Захищений | Видно для класів з пакетом та підкласів іншого пакета. |
Без модифікатора доступу (за замовчуванням) | Видно для класів з пакетом |
приватний | Видно з у класі. Він не доступний поза класом. |
Демо-клас:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
Доступ до учасників класу в іншому класі:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Вихід:
Доступ до публічних учасників:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Вихід:
Боббі
Важливі моменти:
- Специфікатори доступу визначають видимість класу.
- Якщо жодне ключове слово не згадується, це модифікатор доступу за замовчуванням.
- Чотири модифікатори в Java включають загальнодоступний, приватний, захищений та стандартний.
- Приватні та захищені ключові слова не можна використовувати для класів та інтерфейсів.
Висновок
У цьому посібнику ми детально дослідили модифікатори доступу в Java. Java пропонує чотири типи модифікаторів доступу або специфікаторів видимості, тобто типовий, загальнодоступний, приватний та захищений. Модифікатор за замовчуванням не має жодного ключового слова, пов’язаного з ним.
Коли клас або метод або змінна не має специфікованого до нього специфікатора доступу, ми вважаємо, що він має доступ за замовчуванням. Модифікатор загальнодоступного доступу дозволяє отримати доступ до всього, як у класі, так і поза ним. У випадку публічного модифікатора немає обмежень на доступ.
Захищений специфікатор видимості надає доступ лише до підкласів, що успадковують клас, в якому оголошено захищені члени. Модифікатор приватного доступу дозволяє забезпечити доступ до найменшої доступності для членів приватних даних лише в межах класу.
Модифікатори обмежують обсяг членів даних, таких як класи, конструктори, методи та змінні, та визначають обмеження щодо того, які класи або пакети можуть отримати до них доступ. Специфікатори доступу заохочують інкапсуляцію та повторне використання в Java. Зверніть увагу, що класи та інтерфейс не можуть бути захищеними чи приватними.
=> Завітайте сюди, щоб вивчити Java з нуля.
Рекомендована література
- Підручник з роздумів про Java з прикладами
- Підручник JAVA для початківців: 100+ практичних відео-підручників Java
- Вступ до мови програмування Java - Підручник з відео
- Підручник з Java SWING: Контейнер, компоненти та обробка подій
- Рядок Java із підручником для буфера рядків та побудови рядків
- Розгортання Java: Створення та виконання файлу JAR Java
- Віртуальна машина Java: як JVM допомагає у запуску програми Java
- Підручник з Java Collections Framework (JCF)