我們熟悉一下類的訪問權限描述符,public和默認不寫的情況。 類沒有private類型 。
我們先注意一下目錄結構,我們建了一個otherpackage子目錄,用來存放非同一目錄 的類
先看我們的主文件
lession3/Lession3.java
package lession3;
// 注意,我們使用了其它package的類,所以需要import進來
// 注意:路徑必須為完整的路徑
import lession3.otherpackage.PublicClassOtherPackage;
/**
* 老紫竹JAVA基礎培訓(3),認識類的訪問權限描述符.<br>
* 原則:<br>
* public的類,可以被任何類在任何地方訪問<br>
* 默認權限的類(也就是沒寫任何訪問描述符的類)只能在當前package訪問, <br>
* 不能被其它package的類訪問。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class Lession3 {
public static void main(String[] args) {
// 調用同一package下的public訪問權限類
System.out.println(new PublicClassSamePackage().toString());
// 調用同一package下的默認訪問權限類
System.out.println(new DefaultClassSamePackage().toString());
// 調用不同package下的public訪問權限類
System.out.println(new PublicClassOtherPackage().toString());
// 調用不同package下的默認訪問權限類
// System.out.println(new DefaultClassOtherPackage().toString());
}
}
同一個目錄下面的2個java文件
lession3/PublicClassSamePackage.java
package lession3;
/**
* 相同package的公開訪問權限類。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class PublicClassSamePackage {
public String toString() {
return "相同package的公開類";
}
}
lession3/DefaultClassSamePackage.java
package lession3;
/**
* 相同package的默認訪問權限類。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
class DefaultClassSamePackage {
public String toString() {
return "相同package的默認類";
}
}
我們的子目錄裡面的2個不同package的類
lession3/otherpackage/PublicClassOtherPackage.java
package lession3.otherpackage;
/**
* 其它package的公開訪問權限類。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class PublicClassOtherPackage {
public String toString() {
return "其它package的公開類";
}
}
lession3/otherpackage/DefaultClassOtherPackage.java
package lession3.otherpackage;
/**
* 不同package的默認訪問權限類。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
class DefaultClassOtherPackage {
public String toString() {
return " 不同package的默認類";
}
}
我們先看一下運行結果
相同package的公開類
相同package的默認類
其它package的公開類
下面,我們嘗試
1 調用不同package下的默認訪問權限類,我們把Lession3.java裡面的被注釋掉的代 碼恢復,看看編譯錯誤
2 嘗試把前面這個不能訪問的類(DefaultClassOtherPackage)改成 public 類,看看編 譯結果和運行結果
3 嘗試把當前package的 PublicClassOtherPackage 的public去掉,看看編譯和運行 結果
4 嘗試在當前package增加其它的類,並在 Lession3裡面使用,看看編譯和運行結果
5 嘗試在otherpackage裡面增加其它的類,並在 Lession3裡面使用,看看編譯和運行 結果
6 自己新建一個package,嘗試在裡增加其它的類,並在 Lession3裡面使用(注意 import部分必須添加),看看編譯和運行結果
總結:
一個類如果想直接訪問另一個單獨的類,有2種情況
1 和自己在一個package下面,無論其是否為public
2 和自己不在一個package下面,且必須為public