Видимость приватных полей

113
18 ноября 2020, 03:50

Не могу понять почему компилятор не ругается на someclass.field:

public class Someclass {
    private int field;
    public int method(Someclass someclass) {
        return this.field - someclass.field;
    }
}

Поле field же private и, как я понимаю, при обращении через переменную someclass должно быть недоступно.

Answer 1

Компилятор Вас не обманывает.

Предполагается что private поле будет использоваться только внутри класса, в котором оно объявлено.

Ваш пример никак не нарушает это правило, вы обращаетесь хоть и к полю объекта переданного по ссылке, но все-таки это экземпляр этого же класса, в котором и происходит обращение к полю. Так что все легально.

Answer 2

Ключевое слово - Private - оно ограничивает видимость данных и методов пределами одного класса, т.к. у Вас все в пределах одного класса, ругаться и не будет, но если Вы попробуете вызвать переменную таким образов в другом классе, данный метод не сработает

READ ALSO
Количество Java Servlet для CRUD

Количество Java Servlet для CRUD

делаю мини сайти на jsp +servlet+ hibernate(просто для себя)Хочу к примеру сделать CRUD новостей или амдинку

206
Выскакивает generic array creation в Iterator (java)

Выскакивает generic array creation в Iterator (java)

Задача состоит в том, чтобы сделать коллекции ArrayList, LinkedList по-своемуЯ их сделал

119
“Build number” в андроид Java

“Build number” в андроид Java

Подскажите, как в андроид Java получить версию прошивки "Build number", которая отображается в "О телефоне"Нигде не могу найти

104
Как сделать такую анимацию волны?

Как сделать такую анимацию волны?

Как сделать такую анимацию волны, как в примере? По коду не могу понять толком, что тут происходитМожет кто-нибудь знает какой-нибудь урок,...

147