在程序中创建某个类的对象(该类在某个包中)
问题1、如果代码如下:DemoAbc d = new DemoA();则编译时会发生以下错误
PackageDemo.java:8: 找不到符号
符号: 类 DemoA
位置: 类 mypack.PackageDemo
DemoA d = new DemoA();
^
PackageDemo.java:8: 找不到符号
符号: 类 DemoA
位置: 类 mypack.PackageDemo
DemoA d = new DemoA();
^
2 错误
原因:类名写错。
因为DemoA类已经有包的所属,所以必须要明确其包名。
记住:DemoA这个名词错的。 正确名称是报名.类名 packa.DemoA
--------------------------------------
问题2、以上问题修改后,编译时如果不写明包的位置会出现以下错误:
PackageDemo.java:8: 软件包 packa 不存在
packa.DemoA d = new packa.DemoA();
^
PackageDemo.java:8: 软件包 packa 不存在
packa.DemoA d = new packa.DemoA();
2 错误
原因是在当前目录下没找到,因为packa存放在其他目录下,
应该配置一个classpath。
形式:set classpath 包的路径
问题3、如果类在包中中不是公共的;无法从外部软件包中对其进
行访问
问题4、该类的方法不是公共的
包与包之间的类进行访问,被访问的包中的类必须是public的,被访问的包中的类的方法也必须是public的。(这种情况说的是不同包之间,里面的
类不存在继承关系)
引申:protected这个权限仅给不同包之间的子类可以使用
包与包之间类进行访问权限:
public protected default private
同一类中 ok ok ok ok
同一包中 ok ok ok
子类中 ok ok
不同包中 ok
包的导入:import 为了简化类名书写
import packa.DemoA;//导入了packa包中的DemoA类
import packa.*;//导入了packa包中所有的类
导包的原则:用到哪个类,就导入哪个类。