在java中,我們是否真的必須這樣做才能使我們的變量或方法公開?例如:public或nothing
void aaa() {
...
}
或
public void aaa() {
...
}
如果是必須的,爲什麼呢?
在java中,我們是否真的必須這樣做才能使我們的變量或方法公開?例如:public或nothing
void aaa() {
...
}
或
public void aaa() {
...
}
如果是必須的,爲什麼呢?
那麼這不是一個變量,這是一種方法 - 但是,你必須這樣做才能公開一個方法。如果你沒有,它的默認包訪問,並將不能從其他包訪問。您應該自己判斷您編寫的任何特定方法是否只能在同一個類中訪問(使其爲private
)爲子類(使其爲protected
)才能訪問該包(保留缺省值;不能明確指出包訪問)或一切(使其成爲public
)。
(這是訪問修飾符略有簡化,但它是一個開始。)
至於爲什麼這種情況 - 通常你應該限制的知名度,使您的類型只公開方法這實際上對於它試圖封裝的概念是有意義的。你可能有更多的私有方法是特定於實現的,而外部世界不應該知道或關心的。
非常具有說服力,謝謝.. – El3ctr0n1c4 2012-02-22 17:09:16
@Downvoter:小心評論? – 2012-02-22 17:11:18
@JonSkeet我認爲人們有時候投票你的答案來檢查Stackoverflow的投票功能是否適用於你的答案! – 2012-02-22 20:04:57
這兩種方法是不同的:第一種具有包可見性,而第二種是公開的。
區別在於,軟件包可見方法在同一個軟件包內的方法中只出現在公共方法上,而公共方法對於軟件包內部和外部的所有方法都是可見的。
所以你的問題的答案取決於你的意圖:如果你的方法真的是你的組件的接口的一部分,使其私人;如果它僅用於包裝內部,請將其保留在默認包裝可見性範圍內。
在您的第一個示例中,該方法將是包作用域 - 即只有同一包中的東西纔可以使用它。所以是的,你確實需要聲明公共的字段/方法/類,否則它們將會有包的範圍。
默認爲包私有。
如果你想公開或其他任何東西,你必須指定它。
方法可以由類本身,同一包中的其他類訪問,但不在包外,而不能由子類訪問。
在底部見圖表:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
不把改性劑實際上不同比public
,private
,或者protected
。
沒有修飾符,只有類本身和同一包中的任何類都可以訪問該屬性。
這裏瞭解更多:In Java, difference between default, public, protected, and private
我認爲這是假設公衆Java,所以它是不是真的required.If你開始有public
,protected
和private
投在一個類的組合,它是更容易看到該方法可能具有的範圍。
你可以在任何地方ommmit訪問級別修飾符除了靠近主要方法。它必須設置爲公開。
我不確定你的問題是什麼。如果你想要一個方法是公開的,你必須聲明它是公開的。默認情況下,它將具有默認(包)訪問權限。 – DNA 2012-02-22 17:06:33
[在Java中,public,default,protected和private有什麼區別?](http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default - 保護和私人) – 2012-02-22 17:08:20
@RobHruska我認爲你沒有明確表示我的問題。請付出努力的解決方案,而不是調查一些重複 – El3ctr0n1c4 2012-02-22 17:22:36