Розмеження доступу в Java

Лабораторна робота № 5

 

Використання класів та наслідування

 

Оголошення класів дуже важливе, оскільки будь-яка програма на Java — це набір класів.

Модифікатори доступу в багатьох мовах. Вони обмежують можливість використання, наприклад, змінної у класі. Легко уявити права доступу двох граничних видів: це public, коли поле доступне з будь-якої точки програми, і private, коли поле може бути використане тільки всередині того класу, в якому воно оголошено.

Нехай у класі Human існує поле age цілочисельного типу, оголошеного public:

public class Human {

public int age;

}

Може виникнути ситуація, що цілочисельного типу даних вже недостатньо, потрібно змінити тип поля на дробовий. Але якщо просто змінити int на double, òîä³ óñ³ ðîçðîáíèêè, ÿê³ êîðèñòóâàëèñÿ êëàñîì Human ³ éîãî ïîëåì age, âèÿâляòü, ùî ó ¿õíüîìó êîä³ ç’явилися помилки, тому що поле стало дробовим і в рядках таких як:

Human h=getHuman();

Int i=h.age;

буде виникати похибка із-за спроби провести неявним чином звуження примітивного типу.

Подібна зміна (взагалі, невелика і локальна) потребує модифікації у багатьох класах. Тому внесення в неї змін буде неприпустимим, невиправданим з точки зору кількості зусиль, які необхідно затратити. Тобто, оголосивши один раз поле або метод як public, ìîæíà îïèíèòèñÿ â ñèòóàö³¿, êîëè íàéìåíø³ çì³íè (³ìåí³, òèïó, õàðàêòåðèñòèê, ïðàâ âèêîðèñòàííÿ) â ïîäàëüøîìó ñòàíóòü íåìîæëèâèìи.

Íàâïàêè, ÿêùî á ïîëå áóëî îãîëîøåíå ÿê private, à для читання і зміни його значень були б введенні додаткові методи, то ситуація змінилась би:

public class Human {

private int age;

//, age

public int getAge(){

return age;

}

//, age

public void setAge(int a){

age=a;

}

}

В цьому випадку з цим класом могли би працювати багато програмістів, могла бути створена велика кількість класів, використовуючих тип Human, але модифікатор private дає гарантію, що ніхто безпосередньо цим полем не зкористується і зміна його типу була б цілком безболісною оперцією, зв’язаною із змінною саме в одному класі.

Розмеження доступу в Java

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

В Java ìîäèô³êàòîðè äîñòóïó âêàçóþòüñÿ äëÿ:

§ типів (класів та інтерфейсів) оголошення верхнього рівня;

§ елементів типів-посилань (полів, методів, внутрішніх типів);

§ конструкторів класів.

Як наслідок, масив також може бути недоступним, якщо недоступний тип, на основі якого він оголошений.

Усі чотири рівні доступу мають тільки елементи типів і конструкторів. Це:

§ public;

§ private;

§ protected;

§ якщо не вказаний жоден з цих трьох типів, то рівень доступу визначається за замовчуванням(default).

Ïåðø³ äâà ç íèõ âæå ðîçäèâëÿëèñü. Îñòàíí³é ð³âåíü(äîñòóï çà çàìîâ÷óâàííÿì) äîçâîëÿº çâåðíåííÿ ç òîãî æ ïàêåòó, äå îãîëîøåíèé ñàì êëàñ. Ç ö³º¿ ïðè÷èíè ïàêåòè â Java є не тільки набором типів, а більш структурованою одиницею, так як типи всередині одного пакету можуть більше взаємодіяти один з одним ніж з типами з інших пакетів.

Нарешті, protected äຠäîñòóï ñïàäêîºìöÿì êëàñó.

 

Îãîëîøåííÿ êëàñ³â

Ðîçãëÿíåìî áàçîâ³ ìîæëèâîñò³ îãîëîøåííÿ êëàñ³â. Îãîëîøåííÿ êëàñó ñêëàäàºòüñÿ ç çàãîëîâêó ³ ò³ëà êëàñó.

Çàãîëîâîê êëàñó

Ñïî÷àòêó âêàçóþòüñÿ ìîäèô³êàòîðè êëàñó. Ïðèïóñòèìèì ÿâëÿºòüñÿ public, або його відсутність – доступ за замовчуванням. Клас може бути оголошений як final. В цьому випадку не допускається створення спадкоємців такого класу. На своїй гілці спадкування він являється останнім. Клас String і класи-обгортки являються final-класами. Після списку модифікаторів вказується ключове слово class, à ïîò³ì ³ì’я класу – коректний Java-ідентифікатор. Таким чином, найкоротшим оголошенням класу може бути такий модуль компіляції:

class A{}

Тіло класу

Тіло класу містить оголошення елементів (members) класу:

§ полів;

§ методів;

§ внутрішніх типів (класів та інтерфейсів);

та інших допустимих конструкцій:

§ конструкторів;

§ ініціалізаторів;

§ статичних ініціалізаторів.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: