Не понимаю почему модификатор доступа private не ограничивает доступ к массиву

class Test{
    public static void main(String args[]){
        Mas myMas = new Mas();
        Mas myMas1 = new Mas();
        int a = myMas1.sum(myMas);
        System.out.println(a);
        
}
}
class Mas{
    private int a[] = {1,2};
    public int sum(Mas obj){
        int sum = obj.a[0]+5;
        return sum;
    }
}


Ответы (1 шт):

Автор решения: Zhenyria

Модфикатор private блокирует доступ к методу/полю из других классов. Но внутри самого класса это поле/метод доступны.

У вас массив int[]a приватный. А значит, его нельзя вызвать в классе Test, потому что это другой класс. Но внутри класса Mas этот массив вызывать можно, потому что этот класс владеет этим массивом.

  • Вы вызываете приватный массив в методе sum(). Это нормально, ведь и массив, и метод находятся в одном классе.
  • Вы вызываете метод sum() из класса Test. Это нормально, потому что метод sum() в свою очередь публичный и доступен для вызова из других классов.

Ошибкой было бы попытаться обратиться к массиву a из класса Test. А так всё нормально.

→ Ссылка