当类文件很多时,我们按类的功能划分,放到不同的文件夹里。此时类之间的互相调用涉及到包互访的问题。包,就是文件夹。比如我在C盘根目录有个带主函数的Test文件,一个External文件,一个internal文件夹,在文件夹里有个Internal文件。我要从Test中调用External,在External中调用Internal。如下,

Test.java文件:

class Test
{public static void main(String[] args){System.out.println("Test调用外部类Ext");External e=new External();e.show();}
} 

External.java文件:

import internal.Internal;     //导入和本类同级目录下的类public class External
{public voidshow(){System.out.println("这是外部Ext,调用内部的Int");Internal i=new Internal();i.show();}
}

Internal.java文件:

package internal;  //需要指定所在包,才能被和此包同级的类访问到public class Internal
{public voidshow(){System.out.println("内部Int,被外部Ext调用");}
} 

现在我想在Test中调用Internal,从Internal调用External,但是因为Java对于默认包的限制,不能从Internal中直接调用默认包中的External.class。所以我们需要给External一个包。

External文件:

package external;public class External
{public void show(){System.out.println("这是外部Ext,调用内部的Int");}
} 

Internal文件:

package internal;  //需要指定所在包,才能被和此包同级的类访问到
import external.External;    //导入需要的类public class Internal
{public void show(){System.out.println("内部Int,被外部Ext调用");External e=new External();e.show();}
} 

要想编译Test,须要首先存在Internal,要想编译Internal,须要首先存在External。

如果我们事先在根目录新建个external文件夹,在其中放入External.java文件是最容易理解的。我们不这样做,直接将External.java反正根目录,通过一个带参的编译命令也很容易完成这个动作。

这里我将默认包设为了e:\javatest。使用带-d参数的javac命令可以自动创建目录并将编译成的class文件放入。点空格和目录名空格的效果是一样的。

然后编译Internal文件,

再编译运行Test文件,

关于访问默认包下的类,整的我很凌乱。查找多方资料,说从 J2SE 1.4 开始,Java 编译器不再支持 import 进未命包(默认包)名的类、接口。非默认包(子包)中的类调用默认包里的类要用到反射。

我们修改三个文件,

编译中出现标注,略过,

Java上路08-包间互访相关推荐

  1. java包间通信,诊断Java代码: 消除包间的耦合关联[Java编程]

    赞助商链接 本文"诊断Java代码: 消除包间的耦合关联[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自 ...

  2. java包间通信,我想开个程序员餐厅

    我想开个程序员餐厅 我真想开个程序员餐厅了,进门时先写代码再进,一楼餐厅分C包间.java包间.Linux/Unix包间-,搞开源软件的就坐大厅里,搞ruby的上二楼- 现在就来聊聊这餐厅的初期设想吧 ...

  3. 【java笔记】线程间通信(2):生产者和消费者案例分析

    [java笔记]线程间通信(1):等待唤醒机制_m0_52043808的博客-CSDN博客 类: 资源类:包子类:皮,馅,有无 生产者: 包子铺类(线程类)(继承Thread) 设置线程任务(run) ...

  4. JAVA并发类包介绍

    JAVA并发Apl介绍合集 1. java.util.concurrent包 1.1 Executors线程池 1.2 Queues队列 1.3 Concurrent Collections 1.4 ...

  5. Java 打 jar 包的几种方式详解

    一.制作只含有字节码文件的 jar 包 只含有字节码文件,即只含有class文件的jar包制作,这是最简单的形式 1.最简单的jar包--直接输出hello 最终生成的jar包结构 META-INF ...

  6. java:程序包不存在的问题怎么解决

    java:程序包xxxx不存在问题怎么解决 这个问题曾逼疯初学者的我.不过弄清楚原理后就很简单了. 出现这问题要么是没导入坐标,要么jar下载的时候出问题了.前者的话你在看看自己的代码. 后者的话有两 ...

  7. Java中jar包怎么使用_java中jar包的使用方法

    java中jar包的使用方法 发布时间:2020-06-23 11:08:05 来源:亿速云 阅读:162 作者:Leah 这篇文章将为大家详细讲解有关java中jar包的使用方法,小编觉得挺实用的, ...

  8. java.util.concurrent包API学习笔记

    newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...

  9. 【ArrayList】为什么java.util.concurrent 包里没有并发的ArrayList实现?

    2019独角兽企业重金招聘Python工程师标准>>> 为什么java.util.concurrent 包里没有并发的ArrayList实现? 问:JDK 5在java.util.c ...

最新文章

  1. 关于常用mysql的文件
  2. 《企业软件交付:敏捷与高效管理精要》——3.8 结论
  3. VTK:小部件之ImagePlaneWidget
  4. volatile指令重排_有多少人面试栽到Volatile上?面试问题都总结到这儿了
  5. 为什么async/await方法不能有lock或Monitor
  6. 【Pandas】dataframe 设置完全显示所有列
  7. C语言线性表之单链表
  8. HDOJ1018 ( Big Number ) 【斯特林公式---处理阶乘及阶乘位数的问题】
  9. 基于Hexo+Node.js+github+coding搭建个人博客——基础篇
  10. feignclient url_Feign-自定义FeignClient
  11. 豆瓣电影爬虫Ⅱ 豆瓣电影数据的整理
  12. ToolScanner.java:8: 错误: 编码GBK的不可映射字符 //澹版槑绫? JAVA输出中文乱码
  13. 计算机职高会考知识,高职考试语文基础知识
  14. Excel表格导入校验
  15. 计算几何之 旋转卡壳 代码模板与证明
  16. 单引号与双引号的用法
  17. Windows10 运行 WSA
  18. 561. 数组拆分 I(javascript)561. Array Partition I
  19. LCD液晶显示屏闪屏问题解析
  20. 微信小程序时间加法_微信小程序日期转换、比较、加减

热门文章

  1. 【第16天】“提问法”的话题展开法
  2. 办公室租金,降低创业成本
  3. 心理创伤如何影响我们的生活?
  4. Nacos 在 Apache APISIX API 网关中的服务发现实践
  5. 我擅长英语和计算机用英语怎么说,我很擅长英语,用英语怎么说,(擅长于) 用英语有几种表达,列举出来...
  6. 英国医生指出8因素可增减人类寿命
  7. 从邮件服务器宕机谈企业邮箱选型之路
  8. PhotoShop 选区概念及操作
  9. 夜读20230329
  10. (二、模块设计)莞工校招助手【微服务应用】