[英]What is the difference between public, protected, package-private and private in Java?
[英]What are variables without public, private or protected declared as?
如果不是:
private JButton theButton;
我定義了一個這樣的字段:
JButton theButton;
有什么區別?
包裹。 它們對同一包中的其他類可見。
FWIW,我通常在這些上使用我自己的 no-op @Package 注釋,只是為了表明我知道我在做什么 - 我沒有忘記一些東西。 盡管這是默認設置,但與其他三種可能性中的任何一種相比,在高質量代碼中使用包訪問的次數可能更少——有一個很大的例外:
在某些類型的單元測試中,希望能夠訪問通常是私有的方法或字段。 提供訪問權限的一種方法是將它們設置為包訪問權限,並將單元測試類放在同一個包中(但通常在不同的“測試”目錄樹中)。 一些開發人員認為這是不好的做法 - 一般來說,在測試中使用私有(或用於測試的包)方法是不好的。
在 Java 中,有公共、受保護、包(默認)和私有可見性; 從最可見到最不可見的順序。
如果不指定,默認情況下可見性為package 。
package mytest.myvisibility;
public class MyClass
{
public int myPublicInt; // visible to all
protected myProtectedInt; // visible to subclasses of MyClass and to other members of the mytest.myvisibility package
int myPackageInt; // visible only to other members of the mytest.myvisibility package
private int myPrivateInt; // visible only to MyClass objects
}
與 c 上的靜態函數相同。 僅在同一個文件中可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.