包的产生可以使程序范围变大,那么不同包中的类该如何访问呢?
举例:假如pack包中的PackageDemo访问packa包中的DemoA。
DemoA代码如下:
- package packa;
- class DemoA
- {
- void show()
- {
- System.out.println("我是DemoA------");
- }
- }
复制代码
编译DemoA并在f盘的myclass文件夹下生成packa包。dos命令行代码如下:
- e:\sourcefile>javac -d f:\myclass DemoA.java
- e:\sourcefile>
复制代码
编译PackageDemo.java,并在f盘的myclass文件夹下生成pack包,过程如下:
- e:\sourcefile>javac -d f:\myclass DemoA.java
- e:\sourcefile>javac -d f:\myclass PackageDemo.java
- PackageDemo.java:9: 错误: 找不到符号
- DemoA d=new DemoA();
- ^
- 符号: 类 DemoA
- 位置: 类 PackageDemo
- PackageDemo.java:9: 错误: 找不到符号
- DemoA d=new DemoA();
- ^
- 符号: 类 DemoA
- 位置: 类 PackageDemo
- 2 个错误
- e:\sourcefile>
复制代码
发现产生了错误,修改如下,原因见代码中:
- /*
- PackageDemo代码
- */
- package pack;
- class PackageDemo
- {
- public static void main(String[] args)
- {
- packa.DemoA d=new packa.DemoA();//[color=Red]类名为:包名.类名[/color]
- d.show();
- }
- }
复制代码
重新编译,又出现错误提示:
- e:\sourcefile>javac -d f:\myclass PackageDemo.java
- PackageDemo.java:9: 错误: 程序包packa不存在
- packa.DemoA d=new packa.DemoA();
- ^
- PackageDemo.java:9: 错误: 程序包packa不存在
- packa.DemoA d=new packa.DemoA();
- ^
- 2 个错误
- e:\sourcefile>
- 错误原因:packa包不再当前目录下
复制代码
设置classpath变量到packa包目录下,告诉jvm去找packa包的地方;dos命令行设置如下:
- e:\sourcefile>javac -d f:\myclass PackageDemo.java
- PackageDemo.java:9: 错误: DemoA在packa中不是公共的; 无法从外部程序包中对其进行访
- 问
- packa.DemoA d=new packa.DemoA();
- ^
- PackageDemo.java:9: 错误: DemoA在packa中不是公共的; 无法从外部程序包中对其进行访
- 问
- packa.DemoA d=new packa.DemoA();
- ^
- 2 个错误
- e:\sourcefile>
复制代码
又产生错误,原因是DemoA中的类权限不够大:修改代码如下:
- package packa;
- [color=Red]public [/color]class DemoA //此处做了修改
- {
- void show()
- {
- System.out.println("我是DemoA------");
- }
- }
复制代码
编译DemoA,PackageDemo俩文件,又产生错误如下:
- e:\sourcefile>javac -d f:\myclass PackageDemo.java
- PackageDemo.java:10: 错误: show()在DemoA中不是公共的; 无法从外部程序包中对其进行
- 访问
- d.show();
- ^
- 1 个错误
- e:\sourcefile>
复制代码
修改DemoA代码如下:
- package packa;
- public class DemoA
- {
- public void show()
- {
- System.out.println("我是DemoA------");
- }
- }
复制代码
编译通过!
运行,在dos行输入:java pack.PackageDemo程序运行成功,产生结果
我是DemoA!------
总结 :
包也是一种封装形式,
包与包之间进行访问,被访问的包中的类及其成员需要公有。即public修饰。
|
|