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
   24   25   26   27   28   29   30   31   32   33   34