在Java中,訪問修飾符(access modifier)決定了類、變量、方法和構造函數的可見性。public是Java中最寬泛的訪問級別,它有以下特點:
公開訪問:被聲明為public的類、方法、變量或構造函數可以從任何其他類訪問,無論這些類是在同一個包內還是在不同的包內。
包內訪問:如果沒有使用public修飾符,那么類、方法或變量只能在同一個包內的其他類訪問。
默認訪問級別(也稱為包私有):如果既沒有使用public修飾符也沒有使用其他訪問修飾符(如private或protected),則默認為包私有。這意味著它們只能在同一個包內的類訪問。
受保護訪問級別(protected):protected修飾符允許類、方法或變量被同一個包內的類以及所有子類訪問,無論這些子類是否在同一個包內。
下面是一個簡單的例子來說明不同訪問修飾符的效果:
// 文件名:Example.java
package com.example;
public class Example {
public int publicVar = 10; // 可以在任何地方訪問
int defaultVar = 20; // 只能在同一個包內的類訪問
}
package com.example.subpackage;
import com.example.Example;
class SubpackageClass extends Example {
void accessMembers() {
publicVar = 30; // 正確:可以訪問public成員
defaultVar = 40; // 錯誤:不能在子類中直接訪問默認訪問級別的成員
}
}
package com.otherpackage;
import com.example.Example;
class OtherPackageClass {
void accessMembers() {
Example example = new Example();
example.publicVar = 50; // 正確:可以訪問public成員
// example.defaultVar = 60; // 錯誤:不能在不同包的類中訪問默認訪問級別的成員
}
}
在這個例子中,Example
類有一個public變量publicVar
和一個默認訪問級別的變量defaultVar
。SubpackageClass
是Example
的子類,位于同一個包內,它可以訪問publicVar
但不能直接訪問defaultVar
。OtherPackageClass
位于不同的包內,它可以訪問publicVar
但不能訪問defaultVar
。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。