Урок 8

Управление доступом

Способ доступа к члену класса определяется модификатором доступа, присутствующим в его объявлении.

Модификатор доступа предшествует остальной спецификации типа члена. Это означает, что оператор объявления члена должен начинаться с модификатора доступа, например:

public int i; 
private double j; 
private int myMethod (int а , char b ) { / / . . .

Уровни доступа:

  1. public (открытый) - когда член объявляется с модификатором доступа public, он становится доступным из любого другого кода.
  2. private (закрытый) - когда член класса объявляется с модификатором доступа private, он доступен только другим членам этого же класса.
  3. protected (защищенный) - применяется только при наследовании,
  4. уровень доступа, предоставляемый по умолчанию - в отсутствие модификатора доступа по умолчанию член класса считается открытым в своем пакете, но недоступным для кода, находящегося за пределами этого пакета.

Пример 1. Отличие модификаторов

public class Test4 {
    public int b; // public access
    private int c; // private access
    int a; // default access

    // methods to access c
    void setC(int i) { // set c's value
        c = i;
    }

    int getC() { // get c's value
        return c;
    }

    @Override
    public String toString() {
        return "Test4{"
                + "b=" + b
                + ", c=" + c
                + ", a=" + a
                + '}';
    }
}
public class AccessTest1 {
    public static void main(String[] args) {
        Test4 object = new Test4();

        // These are OK, a and b may be accessed directly
        object.a = 10;
        object.b = 20;

        // This is not OK and will cause an error
        // object.c = 100; // Error!

        // You must access c through its methods
        object.setC(100); // OK

        System.out.println("a, b, and c: " + object.a + " "
                + object.b + " " + object.getC());
    }
}
import oop.Test4;

public class AccessTest2 {
    public static void main(String[] args) {
        Test4 object = new Test4();

        // These are OK, a and b may be accessed directly
      //  object.a = 10;
        object.b = 20;

        // This is not OK and will cause an error
        // object.c = 100; // Error!

        // You must access c through its methods
      //  object.setC(100); // OK

      //  System.out.println("a, b, and c: " + object.a + " " +
       //         object.b + " " + object.getC());
    }
}



0 comments
Leave your comment: