2012-01-06 56 views
0

這是一個簡單的鏈表實現,將一個列表分成兩個子列表。爲簡單起見,其他細節已被丟棄這不是Java可見性違例

class SList { 
    private head; 
    Object item; 

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

} 

是不是違反指定list1.head?令我驚訝的是,我嘗試過,它運行良好

+0

對不起,我的意思是「將一個列表拆分爲兩個子列表」 – Ethan 2012-01-06 21:47:21

+0

您期待在那裏發生哪些違規行爲? – kosa 2012-01-06 21:49:55

+1

如果你想讓你的新問題得到更好的關注,你應該接受一些以前提出的問題。 – evasilchenko 2012-01-06 21:49:55

回答

0

JLS 6.6.8

私有類成員或構造方法只在頂層類(第7.6節)包圍的成員或構造的聲明體是可訪問的。

這是同一班。

+0

「頂級課程」 謝謝,這條線幫助了很多。所以在其他函數/類之外,試圖操縱list1.head將是違規行爲 – Ethan 2012-01-06 22:23:29

+1

@Ethan Privates不能從其他類(包括子類)訪問,更正。 'private'確實意味着'private_to_any_other_class's_instances',但是這個撇號不是合法的Java,所以他們將它改爲'private'。 – 2012-01-06 22:27:38

4

private修飾符表示一個成員只能由類本身訪問,它不限於該類的一個實例。另請參閱the documentation

1

類的實例始終可以完全訪問同一類的其他實例的所有成員,而不管它們的可見性如何。 private表示私有此,而不是這個對象