【背景】已经学习到如果一个java文件中,类的名称前面如果没有权限控制,或者有public,则类在同一个包内是可以相互调用的。
【实验一】
新建一个文件夹test。在A.java中定义类:
class A
{
public void say()
{
System.out.println("i am A");
}
}
在B.java中定义public类与main方法,并调用A类:
public class B
{
public static void main(String [] args)
{
A oo = new A();
oo.say();
}
}
然后在test文件夹下,打开cmd,执行javac,java可以编译A、B,最终屏幕打印i am A
后来看到书上加了打包的程序,即在A与B文件开头加上了 package test;
然后,再在test文件夹下打开cmd,执行javac与java却在编译B的时候报找不到类A
后来想了想,打包之后,运行javac与java的地方必须体现这种打包路径,所以在test的上级目录,再次执行javac test/A.java
javac test/B.java
java B
最终得到了正确结果。
此外尝试在eclipse中,test路径下,使用package命令,指定其他包名,发现报错,这也证明了包名是不能乱取的。