Как это не нарушение видимости Java - PullRequest
0 голосов
/ 07 января 2012

Это простая реализация связанного списка для разделения одного списка на два подсписка.Другие детали были отброшены для простоты

class SList {
    private head;
    Object item;

    public void split_list(SList list1, SList list2) {
         list1.head = this.head;
         // Some other stuff
    }

}

не является ли нарушением видимости назначение list1.head?К моему удивлению, я попытался, и все работало нормально

Ответы [ 4 ]

4 голосов
/ 07 января 2012

Модификатор private означает, что член может быть доступен только самому классу, он не ограничен экземпляром этого класса.Также см. документацию

1 голос
/ 07 января 2012

Экземпляр класса всегда имеет полный доступ ко всем членам других экземпляров того же класса, независимо от их видимости.private означает частный для этого класса , а не для этого объекта .

0 голосов
/ 07 января 2012

Модификатор private члена head означает частный для класса SList, не частный для экземпляра из SList (определенный в JLS 6.6.8 http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.6.8).

0 голосов
/ 07 января 2012

Согласно JLS 6.6.8 :

Закрытый член класса или конструктор доступен только в теле класса верхнего уровня (§7.6), который содержит объявлениечлена или конструктора.

Это тот же класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...