包和包及类之间的调用关系(不考虑权限修饰符, 默认为public) :
- 处在同一包下, 可以无需使用包前缀即可访问相同包下的另一个类;
- 处在不同包下, 如调用子包, 则需要使用全名的写法;
- 使用import语句导入相关类, 即可不再使用类全名;
命令行下具体实现流程细节 :
- 先创建三个源文件, Hello 文件, HelloTest 文件 属于相同包lee
Apple 文件位于lee包子包sub包 下, 即lee.sub路径
class Hello
package lee;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
public void hello() {
System.out.println("Hello World!");
}
}
class Apple
package lee.sub;
public class Apple{}
class HelloTest
package lee;
import lee.sub.*;
public class HelloTest {
public static void main(String[] args) {
// 直接访问相同包下的另一个类, 无需使用包前缀
Hello h = new Hello();
h.hello();
// 使用类全名的写法(也就是需要访问不同包中的类要使用包前缀)
lee.sub.Apple a = new lee.sub.Apple();
// 如果使用import语句来导入Apple类, 就可以不再使用类全名了
Apple aa = new Apple();
}
}
-
在源文件文件夹下进入cmd, 分别编译三个源文件
注意 : 因为有 package lee, 因此编译的时候需要给定出包文件夹的位置 , 此处用 -d 选项设置 class 文件的保存位置
javac -d . Hello.java
( . 代表当前路径下) -
编译成功, 在 lee 包文件夹外面进入cmd, 运行class文件
注意 : 此处运行的时候, 是通过 lee.HelloTest 路径运行的
java lee.HelloTest
若是想让同一包下的类不在相同目录下仍可运行, 则需要把这些类的路径配置到CLASSPATH路径下;想了解可以看我的这篇文章—关于最新配置CLASSPATH环境变量定位类
歌曲分享, 适敲代码
歌曲 : Everglow
歌手 : Coldplay