我们熟悉一下类的访问权限描述符,public和默认不写的情况。 类没有private类型 。
我们先注意一下目录结构,我们建了一个otherpackage子目录,用来存放非同一目录 的类
先看我们的主文件
lession3/Lession3.java
package lession3;// 注意,我们使用了其它package的类,所以需要import进来// 注意:路径必须为完整的路径import lession3.otherpackage.PublicClassOtherPackage;/*** 老紫竹JAVA基础培训(3),认识类的访问权限描述符.* 原则:* public的类,可以被任何类在任何地方访问* 默认权限的类(也就是没写任何访问描述符的类)只能在当前package访问, * 不能被其它package的类访问。** @**/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的公开访问权限类。** @**/public class PublicClassSamePackage { public String toString() { return "相同package的公开类"; }}
lession3/DefaultClassSamePackage.java
package lession3;/*** 相同package的默认访问权限类。** @**/class DefaultClassSamePackage { public String toString() { return "相同package的默认类"; }}
我们的子目录里面的2个不同package的类
lession3/otherpackage/PublicClassOtherPackage.java
package lession3.otherpackage;/*** 其它package的公开访问权限类。** @**/public class PublicClassOtherPackage { public String toString() { return "其它package的公开类"; }}
lession3/otherpackage/DefaultClassOtherPackage.java
package lession3.otherpackage;/*** 不同package的默认访问权限类。** @**/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
呼唤你前往另一个地方,过上另一种生活。