mak*_*kko 10 java header package
1)为什么在Java包中的文件中我应该在其中编写"包"内容?它不是间接地假设如果它在目录中,那么它在包中?
2)我来自C++世界.我总是从其他使用该类的文件中导入我需要的类的.h(我的意思是,我只想"显示"标题,而不是实现).但现在我对Java的进口感到有些困惑.这是如何在Java中完成的?
谢谢
不,这不是假设的.毕竟,我的包裹叫什么?com.mypackage.stuff?src.com.mypackage.stuff?myproject.com.mypackage.stuff?C.Users.makakko.workspace.myproject.src.com.mypackage.stuff?
如果您只将文件夹从文件夹中删除,它是否相对于驱动器根目录?如果项目是在不同机器上的不同驱动器号上开发的,该怎么办?它是否相对于javac.exe的位置?再次,不同的安装目录呢?运行javac时工作目录怎么样?但是你可以为javac指定一个位置来查找你的源文件.如果你想做一个简单的测试程序,或者教一个以前从未编程过的Java,怎么办?你必须使用/解释包结构的整个概念吗?
如果省略说明package符,那么你仍然在一个包中.它只是"默认包",没有名称.
头文件更多地是来自C编译方式的工件,而不是实现信息隐藏的方式.在C中,必须先定义一个方法,然后才能引用它.如果你想要有几个相互引用的方法,你必须在使用它们之前定义所有这些方法,因此标题.C++中的头文件从中继承,但C++中的更改改变了头文件的必要性.
在Java中,编译器将在执行需要方法/类的任何操作之前查看所有方法和类签名.header提供的函数被放入编译器本身.您不能依赖标题来隐藏信息,因为
代码可以放在头文件中
除非您使用真正的信息隐藏,例如单独的库,程序员可以找到与标题匹配的c/cpp文件而不会出现问题
同样在Java中,您只能通过删除源来获取真实的信息隐藏.一旦您无法访问源代码,就会使用公共/受保护的类,枚举和接口公开API.要获得奖励积分,请为所有内容编写解释性JavaDoc注释,并在源代码上运行javadoc.exe,以便为将使用您的软件包的任何人生成单独的文档.
1)package声明必须与项目上的目录层次结构相匹配.
如果我使用package com.stackoverflow.bakkal;in,Car.java则需要以下层次结构.
com/
|-- stackoverflow/
| `-- bakkal/
| |-- Car.java
Run Code Online (Sandbox Code Playgroud)
2)如果你想隐藏一个实现,你可以用interfaceJava代替class.然后在.class文件或JAR中分发实际的实现.
嗯,但接口无法实例化......
界面在某种程度上像C++中的原型一样工作.你有合同,然后实际的实施来自其他地方.
我想实例化一个类,但没有给出实现,只有原型
这甚至不可能是C++,如何在没有实际实现的情况下实例化某些东西?在C++中,您仍然需要链接到目标文件.在Java中,您使用.class文件.