我意識到這是一個非常基本的問題,但它總是困擾着我。據我所知,如果你在Java中聲明一個私有字段,那麼它在該類之外是不可見的。如果它受到保護,則可用於繼承的類和同一包中的任何內容(如果其中任何一個定義不正確,請糾正我)。Java類成員的訪問級別
這是否意味着不可能聲明只能繼承的類訪問的字段,而不能聲明同一個包中的其他非繼承類?
我明白有辦法解決這個問題,但是有沒有什麼時候你想要這樣的行爲?
很明顯,上述問題適用於方法和領域。
非常感謝。
我意識到這是一個非常基本的問題,但它總是困擾着我。據我所知,如果你在Java中聲明一個私有字段,那麼它在該類之外是不可見的。如果它受到保護,則可用於繼承的類和同一包中的任何內容(如果其中任何一個定義不正確,請糾正我)。Java類成員的訪問級別
這是否意味着不可能聲明只能繼承的類訪問的字段,而不能聲明同一個包中的其他非繼承類?
我明白有辦法解決這個問題,但是有沒有什麼時候你想要這樣的行爲?
很明顯,上述問題適用於方法和領域。
非常感謝。
請參閱:http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
軟件包>子類,您永遠不能只有一個字段只能被子類看到,而不能被同一個包中的類看到。
是的,Java的受保護訪問有點奇怪。我不能立即明白爲什麼它是可取的。就個人而言,字段因爲我不喜歡非專用字段(常量除外),但其他成員也是如此。
.NET根本沒有包/名稱空間訪問可見性的概念,但它有一個替代方案,它是程序集(認爲是「jar文件」 - 不完全相同,但很接近)。坦率地說,我想有命名空間和部署單位可見性選項,但它似乎註定要失望...
只是關於詞彙表的評論:你在這裏談論的是*可訪問性*變量(或可見性)。變量的範圍是可以使用變量的代碼的一部分(例如,局部變量的範圍是方法的主體或者其定義的塊)。 – 2009-01-21 14:11:55
非常感謝那個Luc – chillysapien 2009-01-21 15:25:18