黑马程序员技术交流社区
标题:
包_02
[打印本页]
作者:
Tauruszzy
时间:
2015-5-11 13:12
标题:
包_02
包的产生可以使程序范围变大,那么不同包中的类该如何访问呢?
举例:假如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修饰。
作者:
Tauruszzy
时间:
2015-5-11 13:17
设置classpath变量到packa包目录下,告诉jvm去找packa包的地方;dos命令行设置如下:
作者:
Tauruszzy
时间:
2015-5-11 13:25
设置classpath变量到packa包目录下,告诉jvm去找packa包的地方;dos命令行设置如下:set classpath=f:\myclass
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2