当前位置: 首页 > 知识库问答 >
问题:

java 中包和目录是什么关系?

潘俊楚
2023-11-18


现在其他包中的 HelloWorld.java 可以访问数据类型这个类。
如果我在其他包这个目录中创建一个新的目录,并且把 HelloWorld.java 移动到这个目录内。编辑器会提示需要声明这个包,假如这个新的目录的名称是 h,那么需要增加一条 package h;这个时候数据类型这个类就无法被访问了。

包和目录层级之间是有什么关系?

共有1个答案

蔚丰
2023-11-18

首先,任何一个java里的类都必须有一个所属的包名,你这里是不是插件原因没有提示报错,你可以试试main程序应该是运行不起来的:
image.png
所以后来编辑器提示要声明这个包是对的,加上声明后你想要访问到数据类型这个类,就要在HelloWorld这个类里使用import显式引入,如果是同一个包下的就不需要:
image.png
当然数据类型这个类也要有包声明:
image.png
总结一下:java里的包类似于其他语言的命名空间,它就是一个目录,你说的(包或者目录)说到底都是一个文件夹而已,只不过包需要在类里显著写出来而已
不同的包下面可以有相同的类,但是相同的包下面不可以有相同的类,java通过这样:
1、避免类名冲突,有相同的类名的时候我们可以通过所属包名来知道它到底是哪一个类
2、实现访问控制:包可以限制类的访问权限
3、模块化管理:包可以将一组相关的类组织在一起,形成一个独立的模块,方便管理和维护

 类似资料:
  • 我读过官方文件 为了澄清我的问题,假设这是我的项目结构: 常见的原型 app.proto,它引用common.proto(在另一个单独的目录中)和util.proto(在子目录中) util。原型 在做了几次试验后,结果表明,如果我在根目录下运行protoc命令,使用以下命令: 然后导入正常工作,每个原始文件都被编译为没有错误。但是,假设我不是在根目录下运行协议,而是在子目录项目中使用类似的命令:

  • 各种Python相关文章中都提到了目录< code>site-packages。什么事?怎么用?

  • 问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3个月前关闭。 改善这个问题 我是新手,只是了解到如果我说 那么该软件包中的Java文件将放置在目录下。 将某些Java文件放入程序包的主要目的是什么?另外,如果我选择采用这种方式,应该如何将它们分组? 谢谢 编辑:对于可能再次遇到相同问题的任何人,我刚刚从Su

  • 问题内容: 当我使用gcc编译非常简单的源文件时,不必指定标准包含文件(例如stdio或stdlib)的路径。 GCC如何知道如何找到这些文件? 它内部是否具有硬连线的路径,还是会从其他OS组件获取路径? 问题答案: 为了弄清楚/ 所使用的默认路径及其优先级,您需要检查以下命令的输出: 对于 C : 对于 C ++ : 这归功于 Qt Creator团队 。

  • 问题内容: Java中的接口类似于类,但是接口的主体只能包含 抽象方法 和字段(常量)。 最近,我看到一个问题,看起来像这样 根据接口定义, 仅 允许 使用抽象方法 。为什么它允许我编译以上代码?关键字是什么? 另一方面,当我尝试编写下面的代码时,它说 代替 谁能告诉我关键字的目的?只能在接口内部使用吗?与(无访问修饰符)有什么区别? 问题答案: 这是Java 8中的一项新功能,可提供一个实现。在

  • 在OSGi bundles中,用一个版本号导出和导入包。包仍然定义了一个版本。这在我看来是多余的。