将一个列表拆分为两个子列表是链表的一个简单实现。为了简化,已放弃其他细节
class SList {
private head;
Object item;
public void split_list(SList list1, SList list2) {
list1.head = this.head;
// Some other stuff
}
}
分配list1.head不是违反了可见性吗?令我惊讶的是,我尝试了一下,结果很好。
private
修饰符意味着成员只能由类本身访问,而不限于该类的实例。另请参阅文档
一个类的实例总是可以完全访问同一类的其他实例的所有成员,而不管它们的可见性如何。private
表示该类的私有,而不是该object。
根据JLS 6.6.8:
私有类成员或构造函数只能在包含成员或构造函数声明的顶级类(§7.6)的主体中访问。
这是同一个班。
成员head
的修饰符private
表示对类SList
私有,而不是对SList
的实例私有(在JLS 6.6.8中定义,http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.6.8)。