黑马程序员技术交流社区
标题: 内部包中的类如何访问上级目录中的类? [打印本页]
作者: 崔维友 时间: 2012-11-17 17:59
标题: 内部包中的类如何访问上级目录中的类?
本帖最后由 崔维友 于 2012-11-17 19:35 编辑
C盘下有个带主函数的Test文件、External文件、internal文件夹。internal中有个Internal文件。
我想在Internal中调用External,然后再Test中调用Internal,如何写代码?
下面是我现在写的代码:
Test.java- import internal.Internal; //导入和本类同级目录下的类
- class Test
- {
- public static void main(String[] args)
- {
- System.out.println("Test调用内部类Int");
- Internal i=new Internal();
- i.show();
- }
- }
复制代码 External.java- public class External
- {
- public void show()
- {
- System.out.println("这是外部Ext,被内部Int的调用");
- }
- }
复制代码 Internal.java- package internal; //需要指定所在包,才能被和此包同级的类访问到
- import External; //这里该如何导入上一级目录中的External?
- public class Internal
- {
- public void show()
- {
- System.out.println("内部Int,调用外部Ext");
- External e=new External();
- e.show();
- }
- }
复制代码 我直接在命令提示符下编译Test.java报错:
先编译External.java,再编译Test.java同样报错:
----------------------------------------------------------------
请问应该怎么在Internal中访问上一级目录中的External呢?
作者: 刘菲 时间: 2012-11-17 18:53
本帖最后由 刘菲 于 2012-11-17 18:55 编辑
你好 你那个问题我运行了 发现几点问题
1.External是一个单独的类使用时不需要导入 一般导入的都是在包内的class文件
你只需要在运行internal时用set classpath设置一下寻找路径就可以找到编译好的 External.class就不会报错了
2.因为你直接把Internal类存入了internal文件中所以不需要再用package来指定包,你把那句话注释掉再设置好路径就可以了
3.在Test类中,以为你的internal类是直接存于文件中的 我不清楚文件与包到底有什么区别 但是我觉得既然他不是包也没必要导入
导入会报错 你把那句话也注释掉
4.总之,你只要设置好寻找路径就可以解决问题,不必在这个问题上太过于纠结
作者: 崔维友 时间: 2012-11-17 19:33
本帖最后由 崔维友 于 2012-11-17 19:35 编辑
非常感谢刘菲一晚上耐心的讲解!按照如下步骤终于编译运行通过:
1.将Test.java中第一行导入语句注释,
2.将Internal.java中第一行和第二行的包语句、导入语句注释,
3.编译External.java文件,
4.编译Internal.java文件,
5.设置classpath为Internal.class所在目录,
6.编译Test.java文件,
7.运行Test。
-------------
至此本帖算是结了吧。感谢刘菲,感谢各位评分的老师!
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |