Page 29 - 4657
P. 29
даному чи пакеті ні - використовуйте комбінацію private
protected.
Нижче приведений досить довгий приклад, у якому
представлені всі припустимі комбінації модифікаторів рівня
доступу. У вихідному коді першого пакета визначається три
класи: Protection, Derived і SamePackage. У першому з цих класів
визначено п'ять цілих змінних - по однієї на кожну з можливих
комбінацій рівня доступу. Змінної n приписаний рівень доступу
за замовчуванням, n_pri - рівень private, n_pro - protected,
n_pripro - private protected і n_pub - public. В всіх інших класах
ми намагаємося використовувати змінні першого класу. Ті рядки
коду, що через обмеження доступу перли-вели б до помилок при
трансляції, закоментовані за допомогою однорядкових
коментарів (//) - перед кожною зазначено, відкіля доступ при
такій комбінації модифікаторів був би можливий. Другий клас -
Derived - є підкласом класу Protection і розташований у тім же
пакеті р1. Тому йому доступні всі перелічені змінні за винятком
n_pri. Третій клас, SamePackage, розташований у тім же пакеті,
але при цьому не є підкласом Protection. З цієї причини для
нього недоступна не тільки змінна n_pri, але і n_pripro, рівень
доступу якої - private protected.
package р1;
public class Protection {
int n = 1;
private int n_pri = 2;
protected int n_pro = 3;
private protected int n_pripro = 4;
public int n_pub = 5;
public Protection() {
System.out.println("base constructor");
System.out.println("n = " + n);
System.out.println("n_pri = " + n_pri);
System.out.println("n_pro = " + n_pro);
System.out.println("n_pripro = " + n_pripro);
System.out.println("n_pub = " + n_pub);
} }
class Derived extends Protection {
Derived() {
27